{$VERSION 3.1.0023}
{$CLEO .cs}

thread 'MISSILE'

{
 0@ Parameter Offset 
 1@ Variable Offset
 2@ Mother Offset
 3@ Function Offset
 4@ X1
 5@ Y1
 6@ Z1
 7@ X2
 8@ Y2
 9@ Z2
10@ Parameter Offset
11@ Variable Offset
12@ Mother Offset
13@ Entity Pointer
14@ Entity Handle
15@ Car / Actor Pointer
16@ X3
17@ Y3
18@ Z3
19@ Shoot Timer in Car
20@ Shoot Side
21@ Shoot Timer on Foot
22@ Camera Key
23@ Camera Index
24@ Nearest Missile
25@ Warning Timer
26@
27@ 
28@ Current Missile Index
29@ Current Mother Index
30@ Loop
31@ Loop
32@ Timer Int
33@ Timer Float
}

wait 0
0A9F: 32@ = current_thread_pointer
000A: 32@ += 0x10
0A8D: 33@ = read_memory 32@ size 4 virtual_protect 0
000A: 33@ += 4 
000A: 32@ += 0x2C

0085: 0@ = 33@ // (int) 
000E: 0@ -= @PARAMETER
0062: 0@ -= 32@ // (int) 
0016: 0@ /= 4
0085: 1@ = 33@ // (int) 
000E: 1@ -= @VARIABLE
0062: 1@ -= 32@ // (int) 
0016: 1@ /= 4
0085: 2@ = 33@ // (int) 
000E: 2@ -= @MOTHER
0062: 2@ -= 32@ // (int) 
0016: 2@ /= 4
0085: 3@ = 33@ // (int) 
000E: 3@ -= @FUNC_LIST
0062: 3@ -= 32@ // (int) 
0016: 3@ /= 4
000A: 33@ += -4 

0085: 0@(3@,1i) = 33@ // (int) 
000E: 0@(3@,1i) -= @FUNC_00
0085: 1@(3@,1i) = 33@ // (int) 
000E: 1@(3@,1i) -= @FUNC_01
0085: 2@(3@,1i) = 33@ // (int) 
000E: 2@(3@,1i) -= @FUNC_02
0085: 3@(3@,1i) = 33@ // (int) 
000E: 3@(3@,1i) -= @FUNC_03
0085: 4@(3@,1i) = 33@ // (int) 
000E: 4@(3@,1i) -= @FUNC_04
0085: 5@(3@,1i) = 33@ // (int) 
000E: 5@(3@,1i) -= @FUNC_05
0085: 6@(3@,1i) = 33@ // (int) 
000E: 6@(3@,1i) -= @FUNC_06

0A9F: 32@ = current_thread_pointer
000A: 32@ += 0x3C
0085: 14@ = 0@ // (int) 
0012: 14@ *= 4
005A: 14@ += 32@ // (int) 
0A9F: 13@ = current_thread_pointer
000A: 13@ += 0x10
0A8D: 13@ = read_memory 13@ size 4 virtual_protect 0
000E: 13@ -= @SSCANF_FORMAT
0A99: chdir 0
0A9A: 32@ = openfile "cleo\missile.dat" mode 0x6272  // IF and SET
for 33@ = 0 to 23
    0AA7: call_function 0x536F80 num_params 1 pop 1 32@ 11@
    0A8D: 12@ = read_memory 11@ size 1 virtual_protect 0
    if
    0039:   12@ == 0
    then
        break
    end 
    if
    0039:   12@ == 0x3B
    then
        000E: 33@ -= 1 
        continue
    end 
    0AA5: call 3@(3@,1i) num_params 3 pop 3 11@ 13@ 14@
    000A: 14@ += 0xA0
end
0A9B: closefile 32@
for 33@ = 0 to 23
    0085: 10@ = 33@ // (int) 
    0012: 10@ *= 40
    005A: 10@ += 0@ // (int)
    if
    88B7:   not  test 39@(10@,1i) bit 12
    then
        0013: 6@(10@,1i) *= -1.0
        0013: 9@(10@,1i) *= -1.0
        0013: 27@(10@,1i) *= -1.0
        0013: 28@(10@,1i) *= -1.0
        0013: 33@(10@,1i) *= -1.0
    end 
    000A: 14@ += 0x90
end

0A9F: 13@ = current_thread_pointer
000A: 13@ += 0x10
0A8D: 13@ = read_memory 13@ size 4 virtual_protect 0
000E: 13@ -= @PROX_SAM
0A8C: write_memory 0x5A0B3B size 1 value 0xB8 virtual_protect 1
0A8C: write_memory 0x5A0B3C size 4 value 13@ virtual_protect 1
0A8C: write_memory 0x5A0B40 size 2 value 0xE0FF virtual_protect 1
000A: 13@ += 1
0A9F: 14@ = current_thread_pointer
0A8C: write_memory 13@ size 4 value 14@ virtual_protect 1

0A9F: 13@ = current_thread_pointer
000A: 13@ += 0x10
0A8D: 13@ = read_memory 13@ size 4 virtual_protect 0
000E: 13@ -= @PROX_HYDRA
0A8C: write_memory 0x429763 size 1 value 0xB8 virtual_protect 1
0A8C: write_memory 0x429764 size 4 value 13@ virtual_protect 1
0A8C: write_memory 0x429768 size 2 value 0xE0FF virtual_protect 1
000A: 13@ += 1
0A9F: 14@ = current_thread_pointer
0A8C: write_memory 13@ size 4 value 14@ virtual_protect 1

0A9F: 13@ = current_thread_pointer
000A: 13@ += 0x10
0A8D: 13@ = read_memory 13@ size 4 virtual_protect 0
000E: 13@ -= @PROX_HUNTER
0A8C: write_memory 0x42B45B size 1 value 0xB8 virtual_protect 1
0A8C: write_memory 0x42B45C size 4 value 13@ virtual_protect 1
0A8C: write_memory 0x42B460 size 2 value 0xE0FF virtual_protect 1
000A: 13@ += 1
0A9F: 14@ = current_thread_pointer
0A8C: write_memory 13@ size 4 value 14@ virtual_protect 1

0A9F: 13@ = current_thread_pointer
000A: 13@ += 0x10
0A8D: 13@ = read_memory 13@ size 4 virtual_protect 0
000E: 13@ -= @PROX_RPG
0A8C: write_memory 0x741A53 size 1 value 0xB8 virtual_protect 1
0A8C: write_memory 0x741A54 size 4 value 13@ virtual_protect 1
0A8C: write_memory 0x741A58 size 2 value 0xE0FF virtual_protect 1
000A: 13@ += 1
0A9F: 14@ = current_thread_pointer
0A8C: write_memory 13@ size 4 value 14@ virtual_protect 1

0A8C: write_memory 0x59FE47 size 4 value 0x788B4C74 virtual_protect 1
0A8C: write_memory 0x59FE4B size 4 value 0x105F8D04 virtual_protect 1

for 31@ = 0 to 127
    0085: 11@ = 31@ // (int) 
    0012: 11@ *= 12
    005A: 11@ += 1@ // (int)
    0006: 0@(11@,1i) = -1
end

for 31@ = 0 to 63
    0085: 12@ = 31@ // (int) 
    0012: 12@ *= 10
    005A: 12@ += 2@ // (int)
    0006: 2@(12@,1i) = -1
end

0006: 21@ = -1
0006: 22@ = -1
0006: 23@ = -128

:MISSILE_LOOP
wait 0
0A8D: 33@ = read_memory 0xB7CB5C size 4 virtual_protect 0
0013: 33@ *= 0.02

// Request Player's Missiles
005A: 19@ += 32@ // (int) 
if
056D:   actor $PLAYER_ACTOR defined
then
    if
    00DD:   actor $PLAYER_ACTOR driving_car_with_model #HYDRA 
    then
        0A96: 13@ = actor $PLAYER_ACTOR struct
        000A: 13@ += 0x58C 
        0A8D: 13@ = read_memory 13@ size 4 virtual_protect 0
        000A: 13@ += 0x9E0
        0A8D: 15@ = read_memory 13@ size 4 virtual_protect 0
        if
        8039:   not  15@ == 0 
        then
            000A: 15@ += 0x22
            0A8D: 14@ = read_memory 15@ size 2 virtual_protect 0
            000A: 15@ += -0x22
        end
        if and
        00E1:   player 0 pressed_key 6 
        8039:   not  15@ == 0 
        0039:   22@ == -1
        then
            if or
            081F:   model 14@ plane 
            0820:   model 14@ heli 
            then
                if
                8039:   not  0@(0@,1i) == 0
                then
                    0A8D: 14@ = read_memory 0xB7CB84 size 4 virtual_protect 0
                    0A96: 13@ = actor $PLAYER_ACTOR struct
                    000A: 13@ += 0x58C 
                    0A8D: 13@ = read_memory 13@ size 4 virtual_protect 0
                    000A: 13@ += 0x4FC
                    0A8C: write_memory 13@ size 4 value 14@ virtual_protect 0
                    000A: 13@ += 0x4
                    0A8C: write_memory 13@ size 4 value 14@ virtual_protect 0
                    000A: 13@ += -0x500
                    if and
                    00E1:   player 0 pressed_key 4 
                    001D:   19@ > 1@(0@,1i) // (int) 
                    then
                        if or
                        08B7:   test 39@(0@,1i) bit 8 
                        08B7:   test 39@(0@,1i) bit 9 
                        then
                            0006: 22@ = 4
                            0085: 23@ = 28@ // (int) 
                            0012: 23@ *= -1
                        end
                        0006: 14@ = 0
                        gosub @MISSILE_PLAYER_CAR
                    end
                end   
            else
                if
                8039:   not  40@(0@,1i) == 0
                then
                    0A8D: 14@ = read_memory 0xB7CB84 size 4 virtual_protect 0
                    0A96: 13@ = actor $PLAYER_ACTOR struct
                    000A: 13@ += 0x58C 
                    0A8D: 13@ = read_memory 13@ size 4 virtual_protect 0
                    000A: 13@ += 0x4FC
                    0A8C: write_memory 13@ size 4 value 14@ virtual_protect 0
                    000A: 13@ += 0x4
                    0A8C: write_memory 13@ size 4 value 14@ virtual_protect 0
                    000A: 13@ += -0x500
                    if and
                    00E1:   player 0 pressed_key 4 
                    001D:   19@ > 41@(0@,1i) // (int) 
                    then
                        if or
                        08B7:   test 79@(0@,1i) bit 8 
                        08B7:   test 79@(0@,1i) bit 9 
                        then
                            0006: 22@ = 4
                            0085: 23@ = 28@ // (int) 
                            0012: 23@ *= -1
                        end
                        0006: 14@ = 1
                        gosub @MISSILE_PLAYER_CAR
                    end
                end    
            end
        end
        if and
        0039:   15@ == 0 
        0039:   22@ == -1
        8039:   not  80@(0@,1i) == 0
        then
            0A8D: 14@ = read_memory 0xB7CB84 size 4 virtual_protect 0
            0A96: 13@ = actor $PLAYER_ACTOR struct
            000A: 13@ += 0x58C 
            0A8D: 13@ = read_memory 13@ size 4 virtual_protect 0
            000A: 13@ += 0x4FC
            0A8C: write_memory 13@ size 4 value 14@ virtual_protect 0
            000A: 13@ += -0x4FC
            if and
            80E1:   not player 0 pressed_key 6 
            00E1:   player 0 pressed_key 4 
            001D:   19@ > 81@(0@,1i) // (int)
            then 
                if or
                08B7:   test 119@(0@,1i) bit 8 
                08B7:   test 119@(0@,1i) bit 9 
                then
                    0006: 22@ = 4
                    0085: 23@ = 28@ // (int) 
                    0012: 23@ *= -1
                end
                0006: 14@ = 2
                0006: 15@ = 0
                gosub @MISSILE_PLAYER_CAR
            end
        end
    end
    if and
    00DD:   actor $PLAYER_ACTOR driving_car_with_model #HUNTER 
    8039:   not  320@(0@,1i) == 0
    then
        0A96: 13@ = actor $PLAYER_ACTOR struct
        000A: 13@ += 0x58C 
        0A8D: 13@ = read_memory 13@ size 4 virtual_protect 0
        000A: 13@ += 0x4FC
        0A8C: write_memory 13@ size 4 value 0x7FFFFFFF virtual_protect 0
        000A: 13@ += -0x4FC
        if and
        001D:   19@ > 321@(0@,1i) // (int) 
        00E1:   player 0 pressed_key 17
        0039:   22@ == -1
        then
            if or
            08B7:   test 359@(0@,1i) bit 8 
            08B7:   test 359@(0@,1i) bit 9 
            then
                0006: 22@ = 17
                0085: 23@ = 28@ // (int) 
                0012: 23@ *= -1
            end
            0006: 14@ = 8
            0006: 15@ = 0
            gosub @MISSILE_PLAYER_CAR
        end
    end
    if and
    00DD:   actor $PLAYER_ACTOR driving_car_with_model #HYDRA 
    8039:   not  880@(0@,1i) == 0
    then
        if
        00E1:   player 0 pressed_key 17
        then
            if
            88B7:   not test 20@ bit 31
            then
                0A96: 13@ = actor $PLAYER_ACTOR struct
                000A: 13@ += 0x58C 
                0A8D: 13@ = read_memory 13@ size 4 virtual_protect 0
                0006: 14@ = 22
                0006: 15@ = 0
                gosub @MISSILE_PLAYER
                08BD: set 20@ bit 31
            end 
        else 
            08C3: clear 20@ bit 31 
        end
    end
    if and
    04AB:   actor $PLAYER_ACTOR driving_plane 
    80DD:   not actor $PLAYER_ACTOR driving_car_with_model #HYDRA 
    8039:   not  920@(0@,1i) == 0
    then
        if
        00E1:   player 0 pressed_key 17
        then
            if
            88B7:   not test 20@ bit 31
            then
                0A96: 13@ = actor $PLAYER_ACTOR struct
                000A: 13@ += 0x58C 
                0A8D: 13@ = read_memory 13@ size 4 virtual_protect 0
                0006: 14@ = 23
                0006: 15@ = 0
                gosub @MISSILE_PLAYER
                08BD: set 20@ bit 31
            end 
        else 
            08C3: clear 20@ bit 31 
        end
    end    
    if and
    04A9:   actor $PLAYER_ACTOR driving_heli 
    8039:   not  920@(0@,1i) == 0
    then
        if
        00E1:   player 0 pressed_key 6
        then
            if
            88B7:   not test 20@ bit 31
            then
                0A96: 13@ = actor $PLAYER_ACTOR struct
                000A: 13@ += 0x58C 
                0A8D: 13@ = read_memory 13@ size 4 virtual_protect 0
                0006: 14@ = 23
                0006: 15@ = 0
                gosub @MISSILE_PLAYER
                08BD: set 20@ bit 31
             end    
        else 
            08C3: clear 20@ bit 31 
        end
    end
    if
    80DF:   not actor $PLAYER_ACTOR driving
    then 
        0A96: 13@ = actor $PLAYER_ACTOR struct
        000A: 13@ += 0x530 
        0A8D: 14@ = read_memory 13@ size 4 virtual_protect 0
        if
        0039:   14@ == 12 
        00E1:   player 0 pressed_key 6 
        then
            000A: 13@ += -0x530 
            if and
            02D8:   actor $PLAYER_ACTOR current_weapon == 35
            8039:   not  400@(0@,1i) == 0
            then
                if
                0039:   21@ == -1 
                then
                    0881: set_player $PLAYER_CHAR able_to_shoot_weapons 0
                    0006: 21@ = 0
                end
                005A: 21@ += 32@ // (int) 
                if and
                00E1:   player 0 pressed_key 17
                0039:   22@ == -1
                then
                    if
                    001D:   21@ > 401@(0@,1i) // (int) 
                    then
                        if or
                        08B7:   test 439@(0@,1i) bit 8 
                        08B7:   test 439@(0@,1i) bit 9 
                        then
                            0006: 22@ = 17
                            0085: 23@ = 28@ // (int) 
                            0012: 23@ *= -1
                        end
                        0006: 14@ = 10
                        0006: 15@ = 0
                        gosub @MISSILE_PLAYER_PED
                    end
                end
            end
            if    
            02D8:   actor $PLAYER_ACTOR current_weapon == 36 
            then
                0A8D: 15@ = read_memory 0xB7CE34 size 4 virtual_protect 0
                if and
                00E1:   player 0 pressed_key 17
                0039:   22@ == -1
                then
                    if
                    8039:   not  15@ == 0 
                    then
                        000A: 15@ += 0x22
                        0A8D: 14@ = read_memory 15@ size 2 virtual_protect 0
                        000A: 15@ += -0x22
                        if or
                        081F:   model 14@ plane 
                        0820:   model 14@ heli 
                        then
                            if
                            8039:   not  480@(0@,1i) == 0
                            then
                                if
                                0039:   21@ == -1 
                                then
                                    0881: set_player $PLAYER_CHAR able_to_shoot_weapons 0
                                    0006: 21@ = 0
                                end
                                005A: 21@ += 32@ // (int) 
                                if
                                001D:   21@ > 481@(0@,1i) // (int) 
                                then
                                    if or
                                    08B7:   test 519@(0@,1i) bit 8 
                                    08B7:   test 519@(0@,1i) bit 9 
                                    then
                                        0006: 22@ = 17
                                        0085: 23@ = 28@ // (int) 
                                        0012: 23@ *= -1
                                    end
                                    0006: 14@ = 12
                                    gosub @MISSILE_PLAYER_PED
                                end
                            end
                        else
                            if    
                            8039:   not  520@(0@,1i) == 0
                            then
                                if
                                0039:   21@ == -1 
                                then
                                    0881: set_player $PLAYER_CHAR able_to_shoot_weapons 0
                                    0006: 21@ = 0
                                end
                                005A: 21@ += 32@ // (int) 
                                if
                                001D:   21@ > 521@(0@,1i) // (int) 
                                then
                                    if or
                                    08B7:   test 559@(0@,1i) bit 8 
                                    08B7:   test 559@(0@,1i) bit 9 
                                    then
                                        0006: 22@ = 17
                                        0085: 23@ = 28@ // (int) 
                                        0012: 23@ *= -1
                                    end
                                    0006: 14@ = 13
                                    gosub @MISSILE_PLAYER_PED
                                end
                            end
                        end
                    else
                        if    
                        8039:   not  560@(0@,1i) == 0
                        then
                            if
                            0039:   21@ == -1 
                            then
                                0881: set_player $PLAYER_CHAR able_to_shoot_weapons 0
                                0006: 21@ = 0
                            end
                            005A: 21@ += 32@ // (int) 
                            if
                            001D:   21@ > 561@(0@,1i) // (int) 
                            then
                                if or
                                08B7:   test 599@(0@,1i) bit 8 
                                08B7:   test 599@(0@,1i) bit 9 
                                then
                                    0006: 22@ = 17
                                    0085: 23@ = 28@ // (int) 
                                    0012: 23@ *= -1
                                end
                                0006: 14@ = 14
                                0006: 15@ = 0
                                gosub @MISSILE_PLAYER_PED
                            end
                        end
                    end 
                end
            end
        else
            if
            8039:   not  21@ == -1 
            then
                0881: set_player $PLAYER_CHAR able_to_shoot_weapons 1 
                0006: 21@ = -1
            end
        end                                                               
    end
end 

// Creating Missiles form Requests
for 31@ = 0 to 63
    0085: 12@ = 31@ // (int) 
    0012: 12@ *= 10
    005A: 12@ += 2@ // (int)
    if
    0039:   2@(12@,1i) == -1
    then
        continue
    end 
    0062: 1@(12@,1i) -= 32@ // (int) 
    if
    0019:   1@(12@,1i) > 0 
    then
        continue
    end 
    0085: 10@ = 2@(12@,1i) // (int) 
    0012: 10@ *= 40
    005A: 10@ += 0@ // (int)
    if
    8248:   not model 22@(10@,1i) available 
    then
        0247: load_model 22@(10@,1i)
        038B: load_requested_models
        continue
    else
        0085: 11@ = 28@ // (int) 
        0012: 11@ *= 12
        005A: 11@ += 1@ // (int)
        gosub @MISSILE_DESTROY
        0085: 0@(11@,1i) = 2@(12@,1i) // (int)  
        0107: 1@(11@,1i) = create_object 22@(10@,1i) at 0.0 0.0 0.0 
        0085: 13@ = 0@(12@,1i) // (int) 
        0A8D: 14@ = read_memory 0xB6F5F0 size 4 virtual_protect 0
        000A: 14@ += 0x530 
        0A8D: 15@ = read_memory 14@ size 4 virtual_protect 0
        000A: 14@ += -0x530 
        if
        0039:   15@ == 50
        then
            000A: 14@ += 0x58C 
            0A8D: 15@ = read_memory 14@ size 4 virtual_protect 0
            000A: 14@ += -0x58C 
        else
            0006: 15@ = -1
        end
        0006: 2@(11@,1i) = 0
        if and
        8039:   not  4@(12@,1i) == 0
        8039:   not  13@ == 0
        then
            if or
            003B:   13@ == 14@ // (int) 
            003B:   13@ == 15@ // (int)
            then
                0188: 2@(11@,1i) = create_marker_above_object 1@(11@,1i)
                0168: set_marker 2@(11@,1i) size 1 
                018B: set_marker 2@(11@,1i) radar_mode 2 
                0165: set_marker 2@(11@,1i) color_to 3
            end
        end 
        if and
        0039:   2@(11@,1i) == 0
        8039:   not  13@ == 0
        then
            if or
            003B:   4@(12@,1i) == 14@ // (int) 
            003B:   4@(12@,1i) == 15@ // (int)
            then
                0188: 2@(11@,1i) = create_marker_above_object 1@(11@,1i)
                0168: set_marker 2@(11@,1i) size 1 
                018B: set_marker 2@(11@,1i) radar_mode 2 
                0165: set_marker 2@(11@,1i) color_to 7
            end
        end 
        if
        08B7:   test 39@(10@,1i) bit 12
        then
            0087: 7@ = 37@(10@,1i) // (float) 
            0013: 7@ *= -1.0
            0007: 8@ = 0.0 
            0007: 9@ = 0.0 
        else
            0007: 7@ = 0.0 
            0087: 8@ = 37@(10@,1i) // (float) 
            0007: 9@ = -90.0 
        end
        0087: 15@ = 3@(10@,1i) // (float)
        if
        08B7:   test 3@(12@,1i) bit 0 
        then
            0013: 15@ *= -1.0
        end 
        0006: 3@(11@,1i) = 0
        0085: 13@ = 0@(12@,1i) // (int) 
        if
        8039:   not  13@ == 0
        then
            000A: 13@ += 0x22 
            0A8D: 14@ = read_memory 13@ size 2 virtual_protect 0
            000A: 13@ += -0x22 
            if and
            0029:   14@ >= 400 
            001B:   612 > 14@ 
            then
                0A8D: 14@ = read_memory 0xB74494 size 4 virtual_protect 0
                0AA8: call_function_method 0x424160 struct 14@ num_params 1 pop 0 13@ 14@
                if
                056E:   car 14@ defined
                then 
                    0681: attach_object 1@(11@,1i) to_car 14@ with_offset 15@ 4@(10@,1i) 5@(10@,1i) rotation 7@ 8@ 9@
                    06A2: get_car 14@ velocity_in_direction_XYZ 7@ 8@ 9@
                    000A: 13@ += 0x50 
                    0A8D: 4@ = read_memory 13@ size 4 virtual_protect 0
                    000A: 13@ += 0x4 
                    0A8D: 5@ = read_memory 13@ size 4 virtual_protect 0
                    000A: 13@ += 0x4
                    0A8D: 6@ = read_memory 13@ size 4 virtual_protect 0
                    000A: 13@ += -0x58
                    00AA: store_car 14@ position_to 16@ 17@ 18@
                end
            else 
                if and
                0029:   14@ >= 0 
                001B:   300 > 14@ 
                then
                    0A8D: 14@ = read_memory 0xB74490 size 4 virtual_protect 0
                    0AA8: call_function_method 0x4442D0 struct 14@ num_params 1 pop 0 13@ 14@
                    if
                    056D:   actor 0@ defined
                    then 
                        069B: attach_object 1@(11@,1i) to_actor 14@ with_offset 15@ 4@(10@,1i) 5@(10@,1i) rotation 7@ 8@ 9@
                        083D: get_actor 14@ velocity_in_direction_XYZ 7@ 8@ 9@
                        0007: 4@ = 0.0 
                        0007: 5@ = 0.0 
                        0007: 6@ = 0.0 
                        00A0: store_actor 14@ position_to 16@ 17@ 18@
                    end
                else 
                    0A8D: 14@ = read_memory 0xB7449C size 4 virtual_protect 0
                    0AA8: call_function_method 0x465070 struct 14@ num_params 1 pop 0 13@ 14@
                    if
                    03CA:   object 14@ exists
                    then 
                        069A: attach_object 1@(11@,1i) to_object 14@ with_offset 15@ 4@(10@,1i) 5@(10@,1i) rotation 7@ 8@ 9@
                        059F: get_object 14@ velocity_in_direction 7@ 8@ 9@
                        05A6: get_object 14@ rotation_velocity_about_an_axis_X 4@ axis_Y 5@ axis_Z 6@ through_center_of_body 
                        01BB: store_object 14@ position_to 16@ 17@ 18@
                    end
                end
            end
        end    
        if or 
        0039:   13@ == 0
        8039:   not  5@(12@,1i) == 0 
        8039:   not  6@(12@,1i) == 0 
        8039:   not  7@(12@,1i) == 0
        then
            0A98: 15@ = object 1@(11@,1i) struct
            000A: 15@ += 0x14 
            0A8D: 15@ = read_memory 15@ size 4 virtual_protect 0
            000A: 15@ += 0x30 
            0A8C: write_memory 15@ size 4 value 5@(12@,1i) virtual_protect 0
            000A: 15@ += 0x4 
            0A8C: write_memory 15@ size 4 value 6@(12@,1i) virtual_protect 0
            000A: 15@ += 0x4 
            0A8C: write_memory 15@ size 4 value 7@(12@,1i) virtual_protect 0
        end 
        if or 
        0039:   13@ == 0
        8039:   not  8@(12@,1i) == 0 
        8039:   not  9@(12@,1i) == 0 
        then
            if
            08B7:   test 39@(10@,1i) bit 12
            then
                0063: 9@(12@,1i) -= 37@(10@,1i) // (float) 
                0453: set_object 1@(11@,1i) XY_rotation 9@(12@,1i) 0.0 angle 8@(12@,1i) 
                005B: 9@(12@,1i) += 37@(10@,1i) // (float) 
            else
                000B: 8@(12@,1i) += -90.0
                005B: 9@(12@,1i) += 37@(10@,1i) // (float) 
                0453: set_object 1@(11@,1i) XY_rotation 0.0 9@(12@,1i) angle 8@(12@,1i) 
                0063: 9@(12@,1i) -= 37@(10@,1i) // (float) 
                000B: 8@(12@,1i) += 90.0
            end
        end 
        if
        08B7:   test 39@(10@,1i) bit 12 
        then
            0400: store_coords_to 4@(11@,1i) 5@(11@,1i) 6@(11@,1i) from_object 1@(11@,1i) with_offset 0.0 6@(10@,1i) 7@(10@,1i)
        else
            0400: store_coords_to 4@(11@,1i) 5@(11@,1i) 6@(11@,1i) from_object 1@(11@,1i) with_offset 6@(10@,1i) 0.0 7@(10@,1i)
        end
        if and 
        8039:   not  13@ == 0 
        0039:   5@(12@,1i) == 0
        0039:   6@(12@,1i) == 0
        0039:   7@(12@,1i) == 0
        then
            005B: 4@(11@,1i) += 7@ // (float) 
            005B: 5@(11@,1i) += 8@ // (float) 
            005B: 6@(11@,1i) += 9@ // (float) 
            01BB: store_object 1@(11@,1i) position_to 7@ 8@ 9@
            0063: 7@ -= 16@ // (float) 
            0063: 8@ -= 17@ // (float) 
            0063: 9@ -= 18@ // (float) 
            0087: 16@ = 5@ // (float) 
            0087: 17@ = 6@ // (float) 
            0087: 18@ = 4@ // (float) 
            006B: 16@ *= 9@ // (float) 
            006B: 17@ *= 7@ // (float) 
            006B: 18@ *= 8@ // (float) 
            006B: 6@ *= 8@ // (float) 
            006B: 4@ *= 9@ // (float) 
            006B: 5@ *= 7@ // (float) 
            0063: 16@ -= 6@ // (float) 
            0063: 17@ -= 4@ // (float) 
            0063: 18@ -= 5@ // (float) 
            0013: 16@ *= 50.0
            0013: 17@ *= 50.0
            0013: 18@ *= 50.0
            005B: 4@(11@,1i) += 16@ // (float) 
            005B: 5@(11@,1i) += 17@ // (float) 
            005B: 6@(11@,1i) += 18@ // (float)
        end
        01BB: store_object 1@(11@,1i) position_to 7@ 8@ 9@
        0063: 4@(11@,1i) -= 7@ // (float) 
        0063: 5@(11@,1i) -= 8@ // (float) 
        0063: 6@(11@,1i) -= 9@ // (float) 
        0085: 7@(11@,1i) = 13@ // (int) 
        0085: 8@(11@,1i) = 4@(12@,1i) // (int) 
        0006: 9@(11@,1i) = 0
        0087: 10@(11@,1i) = 16@(10@,1i) // (float) 
        0006: 11@(11@,1i) = 0
        0682: detach_object 1@(11@,1i) 0.0 0.0 0.0 collision_detection 1 
        08D2: object 1@(11@,1i) scale_model 23@(10@,1i)
        0382: set_object 1@(11@,1i) collision_detection 0
        000A: 3@(12@,1i) += 1
        005A: 1@(12@,1i) += 1@(10@,1i) // (int) 
        if
        002D:   3@(12@,1i) >= 2@(10@,1i) // (int) 
        then
            0006: 0@(12@,1i) = 0
            0006: 1@(12@,1i) = 0
            0006: 2@(12@,1i) = -1
            0006: 3@(12@,1i) = 0
            0006: 4@(12@,1i) = 0
            0006: 5@(12@,1i) = 0
            0006: 6@(12@,1i) = 0
            0006: 7@(12@,1i) = 0
            0006: 8@(12@,1i) = 0
            0006: 9@(12@,1i) = 0
        end 
        000A: 28@ += 1
        if
        0039:   28@ == 128
        then
            0006: 28@ = 0 
        end
    end
end

0007: 24@ = 10.0 

// Processing Missiles 
for 31@ = 0 to 127
    0085: 11@ = 31@ // (int) 
    0012: 11@ *= 12
    005A: 11@ += 1@ // (int)
    if 
    0039:   0@(11@,1i) == -1
    then
        continue
    end 
    if
    83CA:   not object 1@(11@,1i) exists 
    then
        gosub @MISSILE_DESTROY
        continue
    end
    0085: 10@ = 0@(11@,1i) // (int) 
    08C3: clear 10@ bit 31 
    0012: 10@ *= 40
    005A: 10@ += 0@ // (int)
    
    // Timer
    005A: 3@(11@,1i) += 32@ // (int) 
    if and
    801D:   not  8@(10@,1i) > 3@(11@,1i) // (int) 
    88B7:   not test 0@(11@,1i) bit 31 
    then
        0AA5: call 1@(3@,1i) num_params 3 pop 3 1@(11@,1i) 21@(10@,1i) 20@(10@,1i)
        08BD: set 0@(11@,1i) bit 31 
    end
    if and
    802D:   not 12@(10@,1i) >= 3@(11@,1i) // (int) 
    08B7:   test 39@(10@,1i) bit 4 
    then
        0085: 15@ = 7@(11@,1i) // (int) 
        000A: 15@ += 0x22 
        0A8D: 14@ = read_memory 15@ size 2 virtual_protect 0
        000A: 15@ += -0x22 
        if and
        0029:   14@ >= 400 
        001B:   615 > 14@ 
        then
            000A: 15@ += 0x460 
            0A8D: 15@ = read_memory 15@ size 4 virtual_protect 0
        end
        if
        0029:   14@ >= 615 
        then
            0006: 15@ = 0
        end     
        01BB: store_object 1@(11@,1i) position_to 7@ 8@ 9@
        0AA5: call 2@(3@,1i) num_params 5 pop 5 15@ 38@(10@,1i) 9@ 8@ 7@
    end
    0085: 13@ = 23@ // (int) 
    0012: 13@ *= -1
    if and
    801D:   not  17@(10@,1i) > 3@(11@,1i) // (int) 
    8039:   not  22@ == -1
    002B:   0 >= 23@ 
    003B:   31@ == 13@ // (int) 
    then
        0085: 23@ = 1@(11@,1i) // (int) 
        0750: set_object 23@ visibility 0
        if
        08B7:   test 39@(10@,1i) bit 9 
        then
            08B2: enable_thermal_vision 1
        end
        03F0: enable_text_draw 1 
    end

    // Drag
    0AA5: call 6@(3@,1i) num_params 5 pop 5 1@(11@,1i) 6@(11@,1i) 5@(11@,1i) 4@(11@,1i) 7
    006B: 7@ *= 33@ // (float) 
    006B: 8@ *= 33@ // (float) 
    006B: 9@ *= 33@ // (float) 
    if
    08B7:   test 39@(10@,1i) bit 12
    then
        006B: 7@ *= 11@(10@,1i) // (float) 
        006B: 8@ *= 10@(10@,1i) // (float) 
    else
        006B: 7@ *= 10@(10@,1i) // (float) 
        006B: 8@ *= 11@(10@,1i) // (float) 
    end
    006B: 9@ *= 11@(10@,1i) // (float) 
    0400: store_coords_to 7@ 8@ 9@ from_object 1@(11@,1i) with_offset 7@ 8@ 9@
    01BB: store_object 1@(11@,1i) position_to 4@ 5@ 6@
    0063: 7@ -= 4@ // (float) 
    0063: 8@ -= 5@ // (float) 
    0063: 9@ -= 6@ // (float) 
    0087: 4@ = 7@ // (float) 
    0087: 5@ = 8@ // (float) 
    0087: 6@ = 9@ // (float) 
    0073: 4@ /= 4@(11@,1i) // (float) 
    0073: 5@ /= 5@(11@,1i) // (float) 
    0073: 6@ /= 6@(11@,1i) // (float)
    if
    0023:   0.0 > 4@ 
    then
        0007: 7@ = 0.0 
    end 
    if
    0023:   0.0 > 5@ 
    then
        0007: 8@ = 0.0 
    end 
    if
    0023:   0.0 > 6@ 
    then
        0007: 9@ = 0.0 
    end 
    if
    0021:   4@ > 1.0 
    then
        0087: 7@ = 4@(11@,1i) // (float) 
    end 
    if
    0021:   5@ > 1.0 
    then
        0087: 8@ = 5@(11@,1i) // (float) 
    end 
    if
    0021:   6@ > 1.0 
    then
        0087: 9@ = 6@(11@,1i) // (float) 
    end 
    0063: 4@(11@,1i) -= 7@ // (float)
    0063: 5@(11@,1i) -= 8@ // (float)
    0063: 6@(11@,1i) -= 9@ // (float)     
    if and
    08B7:   test 0@(11@,1i) bit 31 
    8039:   not  0@(11@,1i) == 0x80000016
    8039:   not  0@(11@,1i) == 0x80000017
    then
    
        // Thrust 
        0087: 13@ = 9@(10@,1i) // (float) 
        006B: 13@ *= 33@ // (float) 
        if
        08B7:   test 39@(10@,1i) bit 12
        then
            0400: store_coords_to 4@ 5@ 6@ from_object 1@(11@,1i) with_offset 0.0 13@ 0.0
        else
            0400: store_coords_to 4@ 5@ 6@ from_object 1@(11@,1i) with_offset 13@ 0.0 0.0
        end
        01BB: store_object 1@(11@,1i) position_to 7@ 8@ 9@
        0063: 4@ -= 7@ // (float) 
        0063: 5@ -= 8@ // (float) 
        0063: 6@ -= 9@ // (float) 
        005B: 4@(11@,1i) += 4@ // (float) 
        005B: 5@(11@,1i) += 5@ // (float) 
        005B: 6@(11@,1i) += 6@ // (float)
    else
    
        // Gravity
        0A8D: 13@ = read_memory 0x863984 size 4 virtual_protect 0
        0013: 13@ *= 1000.0 
        006B: 13@ *= 33@ // (float) 
        0063: 6@(11@,1i) -= 13@ // (float) 
    end
    
    // Move
    0A98: 14@ = object 1@(11@,1i) struct
    000A: 14@ += 0x14
    0A8D: 14@ = read_memory 14@ size 4 virtual_protect 0
    000A: 14@ += 0x30
    0A8D: 4@ = read_memory 14@ size 4 virtual_protect 0
    000A: 14@ += 0x4
    0A8D: 5@ = read_memory 14@ size 4 virtual_protect 0
    000A: 14@ += 0x4
    0A8D: 6@ = read_memory 14@ size 4 virtual_protect 0
    0087: 7@ = 4@(11@,1i) // (float) 
    0087: 8@ = 5@(11@,1i) // (float) 
    0087: 9@ = 6@(11@,1i) // (float) 
    006B: 7@ *= 33@ // (float) 
    006B: 8@ *= 33@ // (float) 
    006B: 9@ *= 33@ // (float) 
    005B: 4@ += 7@ // (float) 
    005B: 5@ += 8@ // (float) 
    005B: 6@ += 9@ // (float)
    000A: 14@ += -0x8
    0A8D: 7@ = read_memory 14@ size 4 virtual_protect 0
    000A: 14@ += 0x4
    0A8D: 8@ = read_memory 14@ size 4 virtual_protect 0
    000A: 14@ += 0x4
    0A8D: 9@ = read_memory 14@ size 4 virtual_protect 0
    000A: 14@ += -0x8
    0A8C: write_memory 14@ size 4 value 4@ virtual_protect 0
    000A: 14@ += 0x4
    0A8C: write_memory 14@ size 4 value 5@ virtual_protect 0
    000A: 14@ += 0x4
    0A8C: write_memory 14@ size 4 value 6@ virtual_protect 0

    // Collision
    0A9F: 15@ = current_thread_pointer
    0AA8: call_function_method 4@(3@,1i) struct 15@ num_params 0 pop 0 14@
    0012: 14@ *= 0x1000000 
    if and
    8039:   not  14@ == 0
    803B:   not  13@ == 7@(11@,1i) // (int) 
    803B:   not  13@ == 9@(11@,1i) // (int) 
    then
        if
        801D:   not  17@(10@,1i) > 3@(11@,1i) // (int) 
        then
            0085: 15@ = 7@(11@,1i) // (int) 
            000A: 15@ += 0x22 
            0A8D: 14@ = read_memory 15@ size 2 virtual_protect 0
            000A: 15@ += -0x22 
            if and
            0029:   14@ >= 400 
            001B:   615 > 14@ 
            then
                000A: 15@ += 0x460 
                0A8D: 15@ = read_memory 15@ size 4 virtual_protect 0
            end
            if
            0029:   14@ >= 615 
            then
                0006: 15@ = 0
            end     
            0AA5: call 2@(3@,1i) num_params 5 pop 5 15@ 38@(10@,1i) 9@ 8@ 7@
            if or
            08B7:   test 39@(10@,1i) bit 0 
            08B7:   test 39@(10@,1i) bit 1
            then 
                000A: 13@ += 0x22 
                0A8D: 14@ = read_memory 13@ size 2 virtual_protect 0
                000A: 13@ += -0x22 
                if and
                0029:   14@ >= 400 
                001B:   615 > 14@ 
                then
                    0A8D: 14@ = read_memory 0xB74494 size 4 virtual_protect 0
                    0AA8: call_function_method 0x424160 struct 14@ num_params 1 pop 0 13@ 14@
                    if
                    8119:   not car 14@ wrecked
                    then 
                        000A: 13@ += 0x42 
                        0A8D: 13@ = read_memory 13@ size 2 virtual_protect 0
                        if or
                        88B7:   not test 13@ bit 7 
                        08B7:   test 39@(10@,1i) bit 1
                        then
                            020B: explode_car 14@ // versionA 
                        end
                    end
                end
            end
        end     
        0085: 3@(11@,1i) = 12@(10@,1i) // (int) 
        000A: 3@(11@,1i) += 1 
    end     

    // Effect
    if
    08B7:   test 0@(11@,1i) bit 31 
    then
        
        // Corona
        if
        0021:   24@(10@,1i) > 0.0
        then 
            068D: get_camera_position_to 7@ 8@ 9@
            if
            08B7:   test 39@(10@,1i) bit 12
            then
                0400: store_coords_to 4@ 5@ 6@ from_object 1@(11@,1i) with_offset 0.0 27@(10@,1i) 0.0
            else
                0400: store_coords_to 4@ 5@ 6@ from_object 1@(11@,1i) with_offset 27@(10@,1i) 0.0 0.0
            end
            050A: 14@ = distance_between_XYZ 4@ 5@ 6@ and_XYZ 7@ 8@ 9@
            if
            0025:   14@ > 26@(10@,1i) // (float)
            then 
                0AA5: call 0@(3@,1i) num_params 7 pop 7 6@ 5@ 4@ 24@(10@,1i) 3 0 31@
            else
                0AA5: call 0@(3@,1i) num_params 7 pop 7 6@ 5@ 4@ 24@(10@,1i) 3 1 31@
            end
        end

        // Light
        if
        0021:   26@(10@,1i) > 0.0
        then 
            09E5: create_flash_light_at 4@ 5@ 6@ RGB_mask 255 192 128 radius 26@(10@,1i)
            0087: 14@ = 26@(10@,1i) // (float) 
            0017: 14@ /= 2.5
            02CE: 13@ = ground_z_at 4@ 5@ 6@
            0063: 13@ -= 6@ // (float) 
            005B: 13@ += 14@ // (float) 
            0073: 13@ /= 14@ // (float) 
            if
            0021:   13@ > 0.0 
            then
                if
                0021:   13@ > 1.0 
                then
                    0007: 13@ = 1.0
                end 
                0007: 7@ = 128.0
                0007: 8@ = 96.0
                0007: 9@ = 64.0
                006B: 7@ *= 13@ // (float) 
                006B: 8@ *= 13@ // (float) 
                006B: 9@ *= 13@ // (float) 
                0092: 7@ = float 7@ to_integer 
                0092: 8@ = float 8@ to_integer 
                0092: 9@ = float 9@ to_integer 
                016F: create_particle 3 rotation_factor 0.0 size 14@ intensity 100 flags 7@ 8@ 9@ at 4@ 5@ 6@
            end
        end
        
        // Smoke 
        if
        0021:   34@(10@,1i) > 0.0
        then 
            01BB: store_object 1@(11@,1i) position_to 4@ 5@ 6@
            if
            08B7:   test 39@(10@,1i) bit 12
            then
                0400: store_coords_to 16@ 17@ 18@ from_object 1@(11@,1i) with_offset 0.0 33@(10@,1i) 0.0
            else
                0400: store_coords_to 16@ 17@ 18@ from_object 1@(11@,1i) with_offset 33@(10@,1i) 0.0 0.0
            end
            0063: 16@ -= 4@ // (float) 
            0063: 17@ -= 5@ // (float) 
            0063: 18@ -= 6@ // (float) 
            if
            08B7:   test 39@(10@,1i) bit 12
            then
                0400: store_coords_to 4@ 5@ 6@ from_object 1@(11@,1i) with_offset 0.0 27@(10@,1i) 0.0
            else
                0400: store_coords_to 4@ 5@ 6@ from_object 1@(11@,1i) with_offset 27@(10@,1i) 0.0 0.0
            end
            0087: 7@ = 4@(11@,1i) // (float) 
            0087: 8@ = 5@(11@,1i) // (float) 
            0087: 9@ = 6@(11@,1i) // (float) 
            050A: 14@ = distance_between_XYZ 4@(11@,1i) 5@(11@,1i) 6@(11@,1i) and_XYZ 0.0 0.0 0.0
            0073: 7@ /= 14@ // (float) 
            0073: 8@ /= 14@ // (float) 
            0073: 9@ /= 14@ // (float) 
            006B: 7@ *= 35@(10@,1i) // (float)
            006B: 8@ *= 35@(10@,1i) // (float)
            006B: 9@ *= 35@(10@,1i) // (float)
            006B: 14@ *= 33@ // (float)
            0063: 11@(11@,1i) -= 14@ // (float) 
            0087: 14@ = 33@(10@,1i) // (float) 
            006B: 14@ *= 33@ // (float)
            0063: 11@(11@,1i) -= 14@ // (float) 
            while 0023:   0.0 > 11@(11@,1i) 
                0063: 4@ -= 7@ // (float) 
                0063: 5@ -= 8@ // (float) 
                0063: 6@ -= 9@ // (float) 
                005B: 11@(11@,1i) += 35@(10@,1i) // (float) 
                0208: 15@ = random_float_in_ranges 31@(10@,1i) 32@(10@,1i)
                095C: create_smoke_at 4@ 5@ 6@ velocity 16@ 17@ 18@ RGBA 29@(10@,1i) 29@(10@,1i) 29@(10@,1i) 30@(10@,1i) size 34@(10@,1i) last_factor 15@ 
            end
        end     
    end
    
    if and
    8039:   not  22@ == -1
    003B:   23@ == 1@(11@,1i) // (int)
    002D:   12@(10@,1i) >= 3@(11@,1i) // (int) 
    then
        01BB: store_object 1@(11@,1i) position_to 7@ 8@ 9@
        015F: set_camera_position 7@ 8@ 9@ rotation 0.0 0.0 0.0 
        if
        08B7:   test 39@(10@,1i) bit 12
        then
            0400: store_coords_to 7@ 8@ 9@ from_object 1@(11@,1i) with_offset 0.0 1.0 0.0
        else
            0400: store_coords_to 7@ 8@ 9@ from_object 1@(11@,1i) with_offset -1.0 0.0 0.0
        end
        0160: set_camera_point_at 7@ 8@ 9@ mode 2 
        0A8D: 7@ = read_memory 0xC17044 size 4 virtual_protect 0
        0A8D: 8@ = read_memory 0xC17048 size 4 virtual_protect 0
        0093: 7@ = integer 7@ to_float 
        0093: 8@ = integer 8@ to_float 
        0073: 8@ /= 7@ // (float) 
        0017: 8@ /= 0.75
        0013: 8@ *= 2.0
        0007: 7@ = 320.0
        005B: 7@ += 8@ // (float) 
        038E: draw_box_position 320.0 112.0 size 7@ 2.0 RGBA 255 255 255 255 
        038E: draw_box_position 320.0 336.0 size 7@ 2.0 RGBA 255 255 255 255 
        038E: draw_box_position 160.0 224.0 size 8@ 224.0 RGBA 255 255 255 255 
        038E: draw_box_position 480.0 224.0 size 8@ 224.0 RGBA 255 255 255 255 
        0085: 15@ = 12@(10@,1i) // (int) 
        0062: 15@ -= 3@(11@,1i) // (int) 
        033F: set_text_draw_letter_size 0.6 3.6
        0340: set_text_draw_RGBA 255 255 255 255 
        0342: toggle_text_draw_centered 0 
        0345: toggle_text_draw_background 0 
        0348: toggle_text_draw_proportional 0 
        03E4: toggle_text_draw_align_right 1 
        0349: set_text_draw_font 2
        081C: draw_text_outline 0 RGBA 0 0 0 0 
        045A: draw_text_1number 560.0 280.0 GXT 'NUMBER' number 15@  // ~1~
        0AA5: call 6@(3@,1i) num_params 5 pop 5 1@(11@,1i) 6@(11@,1i) 5@(11@,1i) 4@(11@,1i) 7
        if
        08B7:   test 39@(10@,1i) bit 12
        then
            0087: 13@ = 7@ // (float)
            0087: 7@ = 8@ // (float)
            0013: 8@ *= -1.0
            0087: 8@ = 13@ // (float)
        end
        0801: get_camera_zoom_factor_to 13@ // float 
        0017: 13@ /= 2.0 
        02F7: 15@ = sine 13@ // (float) 
        02F6: 14@ = cosine 13@ // (float) 
        0073: 15@ /= 14@ // (float) 
        0073: 8@ /= 7@ // (float) 
        0073: 9@ /= 7@ // (float) 
        006B: 8@ *= 15@ // (float) 
        006B: 9@ *= 15@ // (float) 
        0013: 8@ *= 320.0
        0013: 9@ *= 224.0
        0A8D: 7@ = read_memory 0xC3EFA4 size 4 virtual_protect 0
        0013: 7@ *= 0.75
        006B: 9@ *= 7@ // (float)
        000B: 8@ += 320.0 
        000B: 9@ += 224.0
        0A8D: 13@ = read_memory 0xC17044 size 4 virtual_protect 0
        0A8D: 14@ = read_memory 0xC17048 size 4 virtual_protect 0
        0093: 13@ = integer 13@ to_float 
        0093: 14@ = integer 14@ to_float 
        0073: 14@ /= 13@ // (float) 
        0017: 14@ /= 0.75
        0013: 14@ *= 2.0
        0007: 13@ = 32.0
        005B: 13@ += 14@ // (float) 
        038E: draw_box_position 8@ 9@ size 13@ 2.0 RGBA 255 255 255 255 
        000B: 9@ += -8.0 
        038E: draw_box_position 8@ 9@ size 14@ 18.0 RGBA 255 255 255 255 
    end 

    if
    08B7:   test 39@(10@,1i) bit 12
    then
        0400: store_coords_to 4@ 5@ 6@ from_object 1@(11@,1i) with_offset 0.0 1.0 0.0
    else
        0400: store_coords_to 4@ 5@ 6@ from_object 1@(11@,1i) with_offset 1.0 0.0 0.0
    end
    01BB: store_object 1@(11@,1i) position_to 7@ 8@ 9@
    0063: 4@ -= 7@ // (float) 
    0063: 5@ -= 8@ // (float) 
    0063: 6@ -= 9@ // (float) 
    0AA7: call_function 5@(3@,1i) num_params 2 pop 2 4@ 5@ 9@
    0509: 8@ = distance_between_XY 4@ 5@ and_XY 0.0 0.0 
    0AA7: call_function 5@(3@,1i) num_params 2 pop 2 8@ 6@ 7@
    if and
    08B7:   test 0@(11@,1i) bit 31 
    8039:   not  8@(11@,1i) == 0
    then
        0085: 14@ = 8@(11@,1i) // (int) 
        000A: 14@ += 0x14
        0A8D: 14@ = read_memory 14@ size 4 virtual_protect 0
        if
        0039:   14@ == 0
        then
            if and
            8039:   not  2@(11@,1i) == -1
            8039:   not  2@(11@,1i) == 0
            then 
                0164: disable_marker 2@(11@,1i) 
                0006: 2@(11@,1i) = 0
            end
            0006: 8@(11@,1i) = 0
            0006: 9@(11@,1i) = 0
        else
            000A: 14@ += 0x30
            0A8D: 4@ = read_memory 14@ size 4 virtual_protect 0
            000A: 14@ += 0x4
            0A8D: 5@ = read_memory 14@ size 4 virtual_protect 0
            000A: 14@ += 0x4
            0A8D: 6@ = read_memory 14@ size 4 virtual_protect 0
            000A: 14@ += -0x38
            if and
            0039:   4@ == 0
            0039:   5@ == 0
            0039:   6@ == 0
            then
                if and
                8039:   not  2@(11@,1i) == -1
                8039:   not  2@(11@,1i) == 0
                then 
                    0164: disable_marker 2@(11@,1i) 
                    0006: 2@(11@,1i) = 0
                end
                0006: 8@(11@,1i) = 0
                0006: 9@(11@,1i) = 0
            else
            
                // Flare
                if and
                0021:   19@(10@,1i) > 0.0
                0039:   9@(11@,1i) == 0
                then 
                    0007: 16@ = 10.0 
                    for 30@ = 0xC891A8 to 0xC89604 step 0x24
                        0A8D: 13@ = read_memory 30@ size 4 virtual_protect 0
                        000A: 30@ += 0x04
                        0A8D: 8@ = read_memory 30@ size 4 virtual_protect 0
                        000A: 30@ += 0x0C
                        0A8D: 15@ = read_memory 30@ size 4 virtual_protect 0
                        000A: 30@ += -0x10
                        if or
                        8039:   not  15@ == 0
                        803B:   not  8@ == 8@(11@,1i) // (int) 
                        8039:   not  13@ == 58
                        then
                            continue
                        end    
                        000A: 30@ += 0x14 
                        0A8D: 4@ = read_memory 30@ size 4 virtual_protect 0
                        000A: 30@ += 0x4
                        0A8D: 5@ = read_memory 30@ size 4 virtual_protect 0
                        000A: 30@ += 0x4
                        0A8D: 6@ = read_memory 30@ size 4 virtual_protect 0
                        000A: 30@ += -0x1C
                        0085: 15@ = 8@(11@,1i) // (int) 
                        000A: 15@ += 0x14 
                        0A8D: 15@ = read_memory 15@ size 4 virtual_protect 0
                        000A: 15@ += 0x30
                        0A8D: 8@ = read_memory 15@ size 4 virtual_protect 0
                        0063: 4@ -= 8@ // (float) 
                        000A: 15@ += 0x4
                        0A8D: 8@ = read_memory 15@ size 4 virtual_protect 0
                        0063: 5@ -= 8@ // (float) 
                        000A: 15@ += 0x4
                        0A8D: 8@ = read_memory 15@ size 4 virtual_protect 0
                        0063: 6@ -= 8@ // (float) 
                        050A: 17@ = distance_between_XYZ 4@ 5@ 6@ and_XYZ 0.0 0.0 0.0
                        if
                        0025:   16@ > 17@ // (float) 
                        then
                            0085: 9@(11@,1i) = 30@ // (int) 
                            000E: 9@(11@,1i) -= 0xC891A8 
                            0016: 9@(11@,1i) /= 9 
                            000A: 9@(11@,1i) += 0xC89110 
                            0087: 16@ = 17@ // (float) 
                        end 
                    end    
                    for 30@ = 0 to 127
                        0085: 13@ = 30@ // (int) 
                        0012: 13@ *= 12
                        005A: 13@ += 1@ // (int)
                        if or
                        0039:   0@(13@,1i) == -1
                        803B:   not  7@(13@,1i) == 8@(11@,1i) // (int) 
                        then
                            continue
                        end 
                        0085: 15@ = 0@(13@,1i) // (int) 
                        08C3: clear 15@ bit 31 
                        if and
                        8039:   not  15@ == 22
                        8039:   not  15@ == 23
                        then
                            continue
                        end 
                        01BB: store_object 1@(13@,1i) position_to 4@ 5@ 6@
                        0085: 15@ = 8@(11@,1i) // (int) 
                        000A: 15@ += 0x14 
                        0A8D: 15@ = read_memory 15@ size 4 virtual_protect 0
                        000A: 15@ += 0x30
                        0A8D: 8@ = read_memory 15@ size 4 virtual_protect 0
                        0063: 4@ -= 8@ // (float) 
                        000A: 15@ += 0x4
                        0A8D: 8@ = read_memory 15@ size 4 virtual_protect 0
                        0063: 5@ -= 8@ // (float) 
                        000A: 15@ += 0x4
                        0A8D: 8@ = read_memory 15@ size 4 virtual_protect 0
                        0063: 6@ -= 8@ // (float) 
                        050A: 17@ = distance_between_XYZ 4@ 5@ 6@ and_XYZ 0.0 0.0 0.0
                        if
                        0025:   16@ > 17@ // (float) 
                        then
                            0A98: 9@(11@,1i) = object 1@(13@,1i) struct
                            0087: 16@ = 17@ // (float) 
                        end 
                    end    
                end
                if and
                0021:   19@(10@,1i) > 0.0
                8039:   not  9@(11@,1i) == 0
                then
                    0085: 13@ = 9@(11@,1i) // (int) 
                    000A: 13@ += 0x14
                    0A8D: 13@ = read_memory 13@ size 4 virtual_protect 0
                    if
                    0039:   13@ == 0
                    then
                        0006: 9@(11@,1i) = 0
                    else
                        000A: 13@ += 0x30
                        0A8D: 4@ = read_memory 13@ size 4 virtual_protect 0
                        000A: 13@ += 0x4
                        0A8D: 5@ = read_memory 13@ size 4 virtual_protect 0
                        000A: 13@ += 0x4
                        0A8D: 6@ = read_memory 13@ size 4 virtual_protect 0
                        000A: 13@ += -0x38
                        if and
                        0039:   4@ == 0
                        0039:   5@ == 0
                        0039:   6@ == 0
                        then
                            0006: 9@(11@,1i) = 0
                        else
                            0085: 14@ = 13@ // (int) 
                        end
                    end
                end  
    
                // Proximal Fuse            
                000A: 14@ += 0x30
                0A8D: 4@ = read_memory 14@ size 4 virtual_protect 0
                000A: 14@ += 0x4
                0A8D: 5@ = read_memory 14@ size 4 virtual_protect 0
                000A: 14@ += 0x4
                0A8D: 6@ = read_memory 14@ size 4 virtual_protect 0

                if and
                8039:   not  22@ == 0
                003B:   23@ == 1@(11@,1i) // (int)
                002D:   12@(10@,1i) >= 3@(11@,1i) // (int) 
                08B7:   test 39@(10@,1i) bit 9 
                then
                    000B: 6@ += 2.5 
                    09E5: create_flash_light_at 4@ 5@ 6@ RGB_mask 1024 1024 1024 radius 5.0 
                    000B: 6@ += -2.5 
                end

                000B: 9@ += -90.0
                0453: set_object 1@(11@,1i) XY_rotation 7@ 0.0 angle 9@ 
                01BB: store_object 1@(11@,1i) position_to 7@ 8@ 9@
                0063: 4@ -= 7@ // (float) 
                0063: 5@ -= 8@ // (float) 
                0063: 6@ -= 9@ // (float) 
                if
                0021:   16@(10@,1i) > 0.0
                then 
                    0087: 7@ = 4@ // (float) 
                    0087: 8@ = 5@ // (float) 
                    0087: 9@ = 6@ // (float) 
                    050A: 13@ = distance_between_XYZ 4@(11@,1i) 5@(11@,1i) 6@(11@,1i) and_XYZ 0.0 0.0 0.0
                    006B: 7@ *= 4@(11@,1i) // (float)
                    006B: 8@ *= 5@(11@,1i) // (float)
                    006B: 9@ *= 6@(11@,1i) // (float)
                    0087: 14@ = 7@ // (float) 
                    005B: 14@ += 8@ // (float) 
                    005B: 14@ += 9@ // (float) 
                    0073: 14@ /= 13@ // (float) 
                    0073: 14@ /= 13@ // (float) 
                    0013: 14@ *= -1.0
                    if and
                    0021:   14@ > 0.0 
                    0025:   33@ > 14@ // (float) 
                    then
                        01BB: store_object 1@(11@,1i) position_to 7@ 8@ 9@
                        0013: 14@ *= -1.0
                        0087: 16@ = 4@(11@,1i) // (float) 
                        0087: 17@ = 5@(11@,1i) // (float) 
                        0087: 18@ = 6@(11@,1i) // (float) 
                        006B: 16@ *= 14@ // (float)
                        006B: 17@ *= 14@ // (float)
                        006B: 18@ *= 14@ // (float)
                        050A: 15@ = distance_between_XYZ 4@ 5@ 6@ and_XYZ 0.0 0.0 0.0
                        006B: 15@ *= 15@ // (float) 
                        006B: 14@ *= 13@ // (float)
                        006B: 14@ *= 14@ // (float)
                        0063: 15@ -= 14@ // (float)
                        01FB: 15@ = square_root 15@ 
                        if
                        0025:   16@(10@,1i) > 15@ // (float) 
                        then 
                            005B: 7@ += 16@ // (float) 
                            005B: 8@ += 17@ // (float) 
                            005B: 9@ += 18@ // (float) 
                            0085: 15@ = 7@(11@,1i) // (int) 
                            000A: 15@ += 0x22 
                            0A8D: 14@ = read_memory 15@ size 2 virtual_protect 0
                            000A: 15@ += -0x22 
                            if and
                            0029:   14@ >= 400 
                            001B:   615 > 14@ 
                            then
                                000A: 15@ += 0x460 
                                0A8D: 15@ = read_memory 15@ size 4 virtual_protect 0
                            end
                            if
                            0029:   14@ >= 615 
                            then
                                0006: 15@ = 0
                            end     
                            0AA5: call 2@(3@,1i) num_params 5 pop 5 15@ 38@(10@,1i) 9@ 8@ 7@  
                            0085: 3@(11@,1i) = 12@(10@,1i) // (int) 
                            000A: 3@(11@,1i) += 1
                        end 
                    end 
                end
                
                if and
                8039:   not  22@ == 0
                003B:   23@ == 1@(11@,1i) // (int)
                002D:   12@(10@,1i) >= 3@(11@,1i) // (int) 
                then
                    0AA5: call 6@(3@,1i) num_params 5 pop 5 1@(11@,1i) 6@ 5@ 4@ 7
                    if
                    88B7:   not test 39@(10@,1i) bit 12
                    then
                        0087: 13@ = 7@ // (float)
                        0087: 7@ = 8@ // (float)
                        0013: 8@ *= -1.0
                        0087: 8@ = 13@ // (float)
                    end
                    0801: get_camera_zoom_factor_to 13@ // float 
                    0017: 13@ /= 2.0 
                    02F7: 15@ = sine 13@ // (float) 
                    02F6: 14@ = cosine 13@ // (float) 
                    0073: 15@ /= 14@ // (float) 
                    0073: 8@ /= 7@ // (float) 
                    0073: 9@ /= 7@ // (float) 
                    006B: 8@ *= 15@ // (float) 
                    006B: 9@ *= 15@ // (float) 
                    0013: 8@ *= 320.0
                    0013: 9@ *= 224.0
                    0A8D: 7@ = read_memory 0xC3EFA4 size 4 virtual_protect 0
                    0013: 7@ *= 0.75
                    006B: 9@ *= 7@ // (float)
                    000B: 8@ += 320.0 
                    000B: 9@ += 224.0
                    0A8D: 13@ = read_memory 0xC17044 size 4 virtual_protect 0
                    0A8D: 14@ = read_memory 0xC17048 size 4 virtual_protect 0
                    0093: 13@ = integer 13@ to_float 
                    0093: 14@ = integer 14@ to_float 
                    0073: 14@ /= 13@ // (float) 
                    0017: 14@ /= 0.75
                    0013: 14@ *= 2.0
                    0007: 13@ = 32.0
                    005B: 13@ += 14@ // (float) 
                    000B: 9@ += -16.0 
                    038E: draw_box_position 8@ 9@ size 13@ 2.0 RGBA 255 255 255 255 
                    000B: 9@ += 32.0 
                    038E: draw_box_position 8@ 9@ size 13@ 2.0 RGBA 255 255 255 255 
                    000B: 9@ += -16.0 
                    000B: 8@ += -16.0 
                    038E: draw_box_position 8@ 9@ size 14@ 34.0 RGBA 255 255 255 255 
                    000B: 8@ += 32.0 
                    038E: draw_box_position 8@ 9@ size 14@ 34.0 RGBA 255 255 255 255    
                    000B: 8@ += -16.0 
                end 

                050A: 14@ = distance_between_XYZ 4@(11@,1f) 5@(11@,1f) 6@(11@,1f) and_XYZ 0.0 0.0 0.0
                0013: 14@ *= 5.0
                0007: 15@ = 600.0
                if and   
                0021:   13@(10@,1i) > 0.0
                0039:   9@(11@,1i) == 0
                0025:   14@ > 9@(10@,1i) // (float) 
                then
                    0085: 14@ = 8@(11@,1i) // (int) 
                    000A: 14@ += 0x44
                    0A8D: 7@ = read_memory 14@ size 4 virtual_protect 0
                    000A: 14@ += 0x4
                    0A8D: 8@ = read_memory 14@ size 4 virtual_protect 0
                    000A: 14@ += 0x4
                    0A8D: 9@ = read_memory 14@ size 4 virtual_protect 0
                    0063: 7@ -= 4@(11@,1f) // (float) 
                    0063: 8@ -= 5@(11@,1f) // (float) 
                    0063: 9@ -= 6@(11@,1f) // (float) 
                    050A: 13@ = distance_between_XYZ 4@ 5@ 6@ and_XYZ 0.0 0.0 0.0
                    006B: 7@ *= 4@ // (float)
                    006B: 8@ *= 5@ // (float)
                    006B: 9@ *= 6@ // (float)
                    0087: 14@ = 7@ // (float) 
                    005B: 14@ += 8@ // (float) 
                    005B: 14@ += 9@ // (float) 
                    0073: 14@ /= 13@ // (float) 
                    0013: 14@ *= -1.0
                    0087: 15@ = 14@ // (float) 
                    006B: 15@ *= 15@ // (float)
                    006B: 13@ *= 9@(10@,1i) // (float)
                    0097: make 13@ absolute_float 
                    0013: 13@ *= 2.0
                    005B: 13@ += 15@ // (float) 
                    01FB: 13@ = square_root 13@ 
                    0063: 13@ -= 14@ // (float) 
                    0017: 13@ /= 9@(10@,1i) 
                    0097: make 13@ absolute_float 
                    0087: 15@ = 13@ // (float) 
                    0085: 14@ = 8@(11@,1i) // (int) 
                    000A: 14@ += 0x44
                    0A8D: 7@ = read_memory 14@ size 4 virtual_protect 0
                    000A: 14@ += 0x4
                    0A8D: 8@ = read_memory 14@ size 4 virtual_protect 0
                    000A: 14@ += 0x4
                    0A8D: 9@ = read_memory 14@ size 4 virtual_protect 0
                    006B: 13@ *= 13@(10@,1i) // (float)
                    0013: 13@ *= 50.0
                    006B: 7@ *= 13@ // (float)
                    006B: 8@ *= 13@ // (float)
                    006B: 9@ *= 13@ // (float)
                    005B: 4@ += 7@ // (float) 
                    005B: 5@ += 8@ // (float) 
                    005B: 6@ += 9@ // (float)  
                end 
    
                if and
                0021:   14@(10@,1i) > 0.0
                0039:   9@(11@,1i) == 0
                then
                    0013: 15@ *= 10.0
                    if
                    0025:   15@ > 14@(10@,1i) // (float) 
                    then
                        005B: 6@ += 14@(10@,1i) // (float)
                    end 
                    0017: 15@ /= 10.0 
                end
    
                0A8D: 13@ = read_memory 0xB6F5F0 size 4 virtual_protect 0
                000A: 13@ += 0x530 
                0A8D: 14@ = read_memory 13@ size 4 virtual_protect 0
                000A: 13@ += -0x530 
                if
                0039:   14@ == 50
                then
                    000A: 13@ += 0x58C 
                    0A8D: 14@ = read_memory 13@ size 4 virtual_protect 0
                    000A: 13@ += -0x58C 
                else
                    0006: 14@ = -1
                end
                if or
                003B:   8@(11@,1i) == 13@ // (int) 
                003B:   8@(11@,1i) == 14@ // (int)
                then
                    if
                    0025:   24@ > 15@ // (float)
                    then
                        0087: 24@ = 15@ // (float) 
                    end 
                end

                if and
                8039:   not  22@ == -1
                003B:   23@ == 1@(11@,1i) // (int)
                002D:   12@(10@,1i) >= 3@(11@,1i) // (int) 
                then
                    0013: 15@ *= 1000.0
                    0092: 15@ = float 15@ to_integer 
                    033F: set_text_draw_letter_size 0.6 3.6
                    0340: set_text_draw_RGBA 255 255 255 255 
                    0342: toggle_text_draw_centered 0 
                    0345: toggle_text_draw_background 0 
                    0348: toggle_text_draw_proportional 0 
                    03E4: toggle_text_draw_align_right 1 
                    0349: set_text_draw_font 2
                    081C: draw_text_outline 0 RGBA 0 0 0 0 
                    045A: draw_text_1number 560.0 168.0 GXT 'NUMBER' number 15@  // ~1~
                    0AA5: call 6@(3@,1i) num_params 5 pop 5 1@(11@,1i) 6@ 5@ 4@ 7
                    if
                    88B7:   not test 39@(10@,1i) bit 12
                    then
                        0087: 13@ = 7@ // (float)
                        0087: 7@ = 8@ // (float)
                        0013: 8@ *= -1.0
                        0087: 8@ = 13@ // (float)
                    end
                    0801: get_camera_zoom_factor_to 13@ // float 
                    0017: 13@ /= 2.0 
                    02F7: 15@ = sine 13@ // (float) 
                    02F6: 14@ = cosine 13@ // (float) 
                    0073: 15@ /= 14@ // (float) 
                    0073: 8@ /= 7@ // (float) 
                    0073: 9@ /= 7@ // (float) 
                    006B: 8@ *= 15@ // (float) 
                    006B: 9@ *= 15@ // (float) 
                    0013: 8@ *= 320.0
                    0013: 9@ *= 224.0
                    0A8D: 7@ = read_memory 0xC3EFA4 size 4 virtual_protect 0
                    0013: 7@ *= 0.75
                    006B: 9@ *= 7@ // (float)
                    000B: 8@ += 320.0 
                    000B: 9@ += 224.0
                    0A8D: 13@ = read_memory 0xC17044 size 4 virtual_protect 0
                    0A8D: 14@ = read_memory 0xC17048 size 4 virtual_protect 0
                    0093: 13@ = integer 13@ to_float 
                    0093: 14@ = integer 14@ to_float 
                    0073: 14@ /= 13@ // (float) 
                    0017: 14@ /= 0.75
                    0013: 14@ *= 2.0
                    0007: 13@ = 16.0
                    005B: 13@ += 14@ // (float) 
                    000B: 8@ += -16.0 
                    038E: draw_box_position 8@ 9@ size 13@ 2.0 RGBA 255 255 255 255 
                    000B: 8@ += 32.0 
                    038E: draw_box_position 8@ 9@ size 13@ 2.0 RGBA 255 255 255 255 
                    000B: 8@ += -16.0 
                    000B: 9@ += -16.0 
                    038E: draw_box_position 8@ 9@ size 14@ 18.0 RGBA 255 255 255 255 
                    000B: 9@ += 32.0 
                    038E: draw_box_position 8@ 9@ size 14@ 18.0 RGBA 255 255 255 255    
                    000B: 9@ += -16.0 
                end 

                // Rotate
                0AA5: call 6@(3@,1i) num_params 5 pop 5 1@(11@,1i) 6@ 5@ 4@ 4
                050A: 13@ = distance_between_XYZ 4@ 5@ 6@ and_XYZ 0.0 0.0 0.0 
                0073: 4@ /= 13@ // (float) 
                0073: 5@ /= 13@ // (float) 
                0073: 6@ /= 13@ // (float) 
                0509: 13@ = distance_between_XY 4@ 6@ and_XY 0.0 0.0 
                0AA7: call_function 5@(3@,1i) num_params 2 pop 2 5@ 13@ 13@
                0013: 13@ *= -1.0
                000B: 13@ += 180.0
                if and
                0039:   9@(11@,1i) == 0
                0025:   13@ > 18@(10@,1i) // (float) 
                then
                    if and
                    8039:   not  2@(11@,1i) == -1
                    8039:   not  2@(11@,1i) == 0
                    then 
                        0164: disable_marker 2@(11@,1i) 
                        0006: 2@(11@,1i) = 0
                    end
                    0006: 8@(11@,1i) = 0
                end
                if and
                8039:   not  9@(11@,1i) == 0
                0025:   13@ > 19@(10@,1i) // (float) 
                then
                    0006: 9@(11@,1i) = 0
                end
                if
                0031:   5@ >= 0.0
                then
                    0007: 5@ = -0.01
                end
                0073: 4@ /= 5@ // (float) 
                0073: 6@ /= 5@ // (float) 
                0007: 5@ = 1.0 
                0087: 13@ = 15@(10@,1i) // (float) 
                006B: 13@ *= 33@ // (float) 
                if 
                0031:   13@ >= 90.0
                then
                    0007: 13@ = 89.99 
                end
                02F6: 14@ = cosine 13@ // (float) 
                02F7: 15@ = sine 13@ // (float) 
                0073: 14@ /= 15@ // (float) 
                0509: 13@ = distance_between_XY 4@ 6@ and_XY 0.0 0.0 
                if
                0025:   13@ > 14@ // (float) 
                then
                    0073: 4@ /= 13@ // (float) 
                    0073: 6@ /= 13@ // (float) 
                    006B: 4@ *= 14@ // (float) 
                    006B: 6@ *= 14@ // (float) 
                end
                0400: store_coords_to 4@ 5@ 6@ from_object 1@(11@,1i) with_offset 4@ 5@ 6@    
                01BB: store_object 1@(11@,1i) position_to 7@ 8@ 9@
                0063: 4@ -= 7@ // (float) 
                0063: 5@ -= 8@ // (float) 
                0063: 6@ -= 9@ // (float) 
                0AA7: call_function 5@(3@,1i) num_params 2 pop 2 4@ 5@ 9@
                0509: 8@ = distance_between_XY 4@ 5@ and_XY 0.0 0.0 
                0AA7: call_function 5@(3@,1i) num_params 2 pop 2 8@ 6@ 7@  
            end
        end 
    end
    if
    08B7:   test 39@(10@,1i) bit 12
    then
        000B: 9@ += -90.0
        0453: set_object 1@(11@,1i) XY_rotation 7@ 0.0 angle 9@ 
    else
        0013: 7@ *= -1.0
        0453: set_object 1@(11@,1i) XY_rotation 0.0 7@ angle 9@
    end

    if
    002D:   12@(10@,1i) >= 3@(11@,1i) // (int) 
    0AA0: gosub_if_false @MISSILE_DESTROY
end

0006: 14@ = 0xC7C748
0085: 30@ = 28@ // (int) 
for 31@ = 0 to 15
    000E: 30@ -= 1
    if
    0039:   30@ == -1
    then
        0006: 30@ = 127
    end 
    0085: 11@ = 30@ // (int) 
    0012: 11@ *= 12
    005A: 11@ += 1@ // (int)
    if and
    8039:   not  0@(11@,1i) == -1
    08B7:   test 0@(11@,1i) bit 31 
    then
        0085: 10@ = 0@(11@,1i) // (int) 
        08C3: clear 10@ bit 31 
        0012: 10@ *= 40
        005A: 10@ += 0@ // (int)
        if
        08B7:   test 39@(10@,1i) bit 12
        then
            0400: store_coords_to 4@ 5@ 6@ from_object 1@(11@,1i) with_offset 0.0 27@(10@,1i) 0.0
            0400: store_coords_to 7@ 8@ 9@ from_object 1@(11@,1i) with_offset 0.0 28@(10@,1i) 0.0
        else
            0400: store_coords_to 4@ 5@ 6@ from_object 1@(11@,1i) with_offset 27@(10@,1i) 0.0 0.0
            0400: store_coords_to 7@ 8@ 9@ from_object 1@(11@,1i) with_offset 28@(10@,1i) 0.0 0.0
        end
        0A8C: write_memory 14@ size 4 value 7@ virtual_protect 0
        000A: 14@ += 0x4 
        0A8C: write_memory 14@ size 4 value 8@ virtual_protect 0
        000A: 14@ += 0x4 
        0A8C: write_memory 14@ size 4 value 9@ virtual_protect 0
        000A: 14@ += 0x4 
        0A8C: write_memory 14@ size 4 value 4@ virtual_protect 0
        000A: 14@ += 0x4 
        0A8C: write_memory 14@ size 4 value 5@ virtual_protect 0
        000A: 14@ += 0x4 
        0A8C: write_memory 14@ size 4 value 6@ virtual_protect 0
        000A: 14@ += 0x4 
        0A8C: write_memory 14@ size 1 value 1 virtual_protect 0
        000A: 14@ += 0x4 
        0A8D: 13@ = read_memory 0xB7CB84 size 4 virtual_protect 0
        0A8C: write_memory 14@ size 4 value 13@ virtual_protect 0
        000A: 14@ += 0x4 
        0A8C: write_memory 14@ size 4 value 100 virtual_protect 0
        000A: 14@ += 0x4 
        0A8C: write_memory 14@ size 4 value 25@(10@,1i) virtual_protect 0
        000A: 14@ += 0x4 
        0A8C: write_memory 14@ size 1 value 36@(10@,1i) virtual_protect 0
        000A: 14@ += -0x28 
    end 
    000A: 14@ += 0x2C 
end

if
0023:   10.0 > 24@ 
then
    0013: 24@ *= 250.0
    0092: 24@ = float 24@ to_integer 
    if
    001D:   25@ > 24@ // (int) 
    then
        018C: play_sound 1083 at 0.0 0.0 0.0 
        0006: 25@ = 0
    end
end
005A: 25@ += 32@ // (int) 

if
8039:   not  22@ == -1
then
    if
    80E1:   not player 0 pressed_key 22@
    then
        0006: 22@ = -1
        if
        0019:   23@ > 0 
        then
            0750: set_object 23@ visibility 1
            08B2: enable_thermal_vision 0 
            02EB: restore_camera_with_jumpcut 
            0006: 23@ = -1
        end
    end 
end    

0006: 32@ = 0
jump @MISSILE_LOOP

:MISSILE_PLAYER_CAR
gosub @MISSILE_PLAYER
0006: 19@ = 0
return

:MISSILE_PLAYER_PED
gosub @MISSILE_PLAYER
068E: get_camera_target_point_to 4@ 5@ 6@
068D: get_camera_position_to 5@(12@,1i) 6@(12@,1i) 7@(12@,1i)
0063: 4@ -= 5@(12@,1i) // (float) 
0063: 5@ -= 6@(12@,1i) // (float) 
0063: 6@ -= 7@(12@,1i) // (float) 
0AA7: call_function 5@(3@,1i) num_params 2 pop 2 4@ 5@ 8@(12@,1i)
0509: 4@ = distance_between_XY 4@ 5@ and_XY 0.0 0.0 
0AA7: call_function 5@(3@,1i) num_params 2 pop 2 4@ 6@ 9@(12@,1i)
000F: 8@(12@,1i) -= 90.0 
0006: 21@ = 0
return

:MISSILE_PLAYER
0085: 12@ = 29@ // (int) 
0012: 12@ *= 10
005A: 12@ += 2@ // (int)
0085: 0@(12@,1i) = 13@ // (int) 
0006: 1@(12@,1i) = 0
0006: 2@(12@,1i) = 14@
if
08B9:   test 20@ bit 14@
then
    0006: 3@(12@,1i) = 1
    08C4: clear 20@ bit 14@
else
    0006: 3@(12@,1i) = 0
    08BF: set 20@ bit 14@
end
0085: 4@(12@,1i) = 15@ // (int) 
0006: 5@(12@,1i) = 0
0006: 6@(12@,1i) = 0
0006: 7@(12@,1i) = 0
0006: 8@(12@,1i) = 0
0006: 9@(12@,1i) = 0
000A: 29@ += 1
if
0039:   29@ == 64
0AA1: return_if_false
0006: 29@ = 0 
return

:MISSILE_DESTROY
if
8039:   not  0@(11@,1i) == -1
0AA1: return_if_false
if
003B:   23@ == 1@(11@,1i) // (int)
then
    08B2: enable_thermal_vision 0
    02EB: restore_camera_with_jumpcut 
    0006: 23@ = -128
end
0006: 0@(11@,1i) = -1 
if
03CA:   object 1@(11@,1i) exists 
then
    0108: destroy_object 1@(11@,1i) 
end
0006: 1@(11@,1i) = 0
if and
8039:   not  2@(11@,1i) == -1
8039:   not  2@(11@,1i) == 0
then 
    0164: disable_marker 2@(11@,1i) 
end
0006: 2@(11@,1i) = 0
0006: 3@(11@,1i) = 0
0006: 4@(11@,1i) = 0
0006: 5@(11@,1i) = 0
0006: 6@(11@,1i) = 0
0006: 7@(11@,1i) = 0
0006: 8@(11@,1i) = 0
0006: 9@(11@,1i) = 0
0006: 10@(11@,1i) = 0
0006: 11@(11@,1i) = 0  
return

:SSCANF_FORMAT
hex
"%d" 20 "%d" 20 "%d" 20 "%f" 20 "%f" 20 "%f" 20 "%f" 20 "%f" 20 "%d" 20 "%f" 20 "%f" 20 "%f" 20 "%d" 20 "%f" 20 "%f" 20 "%f" 20 "%f" 20 "%d" 20 "%f" 20 "%f" 20 "%f" 20 "%f" 20 "%d" 20 "%f" 20 "%f" 20 "%f" 20 "%f" 20 "%f" 20 "%f" 20 "%f" 20 "%f" 20 "%f" 20 "%f" 20 "%f" 20 "%f" 20 "%f" 20 "%d" 20 "%f" 20 "%d" 20 "%x" 00
end

:MATRIX
hex
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
end

:PARAMETER
hex
00000000 // Padding
//Use    Fire                                                           Cruise                                       Seek                       Fuse              Limit             Sound             Model                                        Smoke
//Use    Reload   AutoNum  FireXPos FireYPos FireZPos FireFVel FireBVel IgnitTim MaxSpped DragS    DragF    MaxTime  Estimate Upper    Moment   ProxFuse FuseTime LoseTrgt LoseFlar SoundKey SoundRng ModelID  Scale    FireSize FireRad  LightRad FirePos  FireLen  SmkLight SmkAlpha SmkFirst SmkLast  SmkSpeed SmkSize  SmkIntvl FireAlp  UpperAng ExplType Flags
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 // Self.Hydra  to  NPC.Air    Missile
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 // Self.Hydra  to  NPC.Ground Missile
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 // Self.Hydra                 Rocket
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 //  NPC.Hydra  to Self.Air    Missile
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 //  NPC.Hydra  to Self.Ground Missile
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 //  NPC.Hydra  to  NPC.Air    Missile
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 //  NPC.Hydra  to  NPC.Ground Missile
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 //  NPC.Hydra                 Rocket
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 // Self.Hunter                Rocket
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 //  NPC.Hunter                Rocket
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 // Self.RPG                   Rocket
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 //  NPC.RPG                   Rocket
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 // Self.HS-RPG to  NPC.Air    Missile
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 // Self.HS-RPG to  NPC.Ground Missile
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 // Self.HS-RPG                Rocket
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 //  NPC.HS-RPG to Self.Air    Missile
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 //  NPC.HS-RPG to Self.Ground Missile
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 //  NPC.HS-RPG to  NPC.Air    Missile
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 //  NPC.HS-RPG to  NPC.Ground Missile
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 //  NPC.HS-RPG                Rocket
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 //  Map.Turret to Self.Air    Missile
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 //  Map.Turret to Self.Ground Missile
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 // Self.Hydra                 Flare
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 // Self.Aircraft              Flare
00000000 // Padding
end

:VARIABLE
hex
00000000 // Padding
//Type   Object   Marker   Timer    Vel X    Vel Y    Vel Z    Mother   Target   Flare    ProxFuse Smoke
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 // Padding
end

:MOTHER
hex
00000000 // Padding
//Struct Time     Type     Current  Target   X Pos    Y Pos    Z Pos    Heading  Pitch    //Struct Time     Type     Current  Target   X Pos    Y Pos    Z Pos    Heading  Pitch
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 // Padding
end

:FUNC_LIST
hex
00000000 // Padding
00000000 // Corona
00000000 // Sound
00000000 // Explosion
00000000 // Read
00000000 // HitTest
00000000 // PATan
00000000 // InvMatrix
00000000 // Padding
end

// 0AA5: call 0@(3@,1i) num_params 7 pop 7 [Z] [Y] [X] [Size] [Type] [Flare] [ID]
:FUNC_00
hex
6A00            // push 0
6A00            // push 0
6800007041      // push 15.0
6A00            // push 0
68CDCC4C3E      // push 0.2
6A00            // push 0
6A00            // push 0
6A00            // push 0
6A00            // push 0
6A01            // push 1
8B4C2430        // mov ecx, [esp+0x30]
51              // push ecx                     // Corona Flare 
8B4C2438        // mov ecx, [esp+0x38]
51              // push ecx                     // Corona Type 
6800803B45      // push 3000.0
8B4C2444        // mov ecx, [esp+0x44]
51              // push ecx                     // Corona Size
8D94244C000000  // lea edx, [esp+0x0000004C]
52              // push edx                     // Corona Position Pointer
68FF000000      // push 255                     // Corona Alpha
6880000000      // push 128                     // Corona Blue
68C0000000      // push 192                     // Corona Green
68FF000000      // push 255                     // Corona Red
6A00            // push 0
8B442454        // mov eax, [esp+0x54]
03C6            // add eax, esi
50              // push eax                     // Corona ID
B880C56F00      // mov eax, 0x006FC580
FFD0            // call eax
83C454          // add esp, 0x54
C3              // ret
end

// 0AA5: call 1@(3@,1i) num_params 3 pop 3 [Object] [Range] [Pitch]
:FUNC_01
hex
56              // push esi
6A00            // push 0
680AD7A33C      // push 0.02
6880000000      // push 0x80
6A00            // push 0
680000803F      // push 1.0
8B4C241C        // mov ecx, [esp+0x18]
51              // push ecx                     // Sound Pitch 
8B4C2424        // mov ecx, [esp+0x20]
51              // push ecx                     // Sound Range 
6800006041      // push 14.0
8B4C2430        // mov ecx, [esp+0x30]
51              // push ecx
8B0D9C44B700    // mov ecx, [0x00B7449C]
B840504600      // mov eax, 0x00465040
FFD0            // call eax
83C014          // add eax, 0x14
8B08            // mov ecx, [eax]
8B4130          // mov eax, [ecx+0x30]
50              // push eax
8B4134          // mov eax, [ecx+0x34]
50              // push eax
8B4138          // mov eax, [ecx+0x38]
50              // push eax
8B35C4DAB600    // mov esi, [0x00B6DAC4]
56              // push esi
83C608          // add esi, 0x08
6A1A            // push 26
6A13            // push 19
8BCE            // mov ecx, esi
B850FE4E00      // mov eax, 0x004EFE50
FFD0            // call eax
8B4C2410        // mov ecx, [esp+0x10]
51              // push ecx
8B0D9C44B700    // mov ecx, [0x00B7449C]
B840504600      // mov eax, 0x00465040
FFD0            // call eax
50              // push eax
8BCE            // mov ecx, esi
B820F84E00      // mov eax, 0x004EF820
FFD0            // call eax
56              // push esi
B9B02CB600      // mov ecx, 0x00B62CB0
B810FB4E00      // mov eax, 0x004EFB10
FFD0            // call eax
5E              // pop esi
C3              // ret
end

// 0AA5: call 2@(3@,1i) num_params 5 pop 5 [Actor] [Type] [Z] [Y] [X]
:FUNC_02
hex
6A00            // push 0
68000080BF      // push -1.0
6A01            // push 1
6A00            // push 0
8B4C241C        // mov ecx, [esp+0x1C]
51              // push ecx                     // Explosion Z
8B4C241C        // mov ecx, [esp+0x1C]
51              // push ecx                     // Explosion Y
8B4C241C        // mov ecx, [esp+0x1C]
51              // push ecx                     // Explosion X
8B4C242C        // mov ecx, [esp+0x2C]
51              // push ecx                     // Explosion Type
8B4C2434        // mov ecx, [esp+0x34]
51              // push ecx                     // Explosion Ojbect
6A00            // push 0
B8506A7300      // mov eax, 0x00736A50
FFD0            // call eax
83C428          // add esp, 0x28
C3              // ret
end

// 0AA5: call 3@(3@,1i) num_params 3 pop 3 [String] [Format] [Destination]
:FUNC_03
hex
8B4C2404        // mov ecx, [esp+0x04]
81C19C000000    // add ecx, 0x9C
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
83E904          // sub ecx, 0x04
51              // push ecx
8B8C24A8000000  // mov ecx, [esp+0x000000A8]
51              // push ecx
8B8C24B0000000  // mov ecx, [esp+0x000000B0]
51              // push ecx
A1D5865300      // mov eax, [0x005386D5]        // Offset 0x008220ED
05D9865300      // add eax, 0x005386D9          //
FFD0            // call eax
81C4A8000000    // add esp, 0x000000A8h
C3              // ret
end

// 0AA8: call_function_method 4@(3@,1i) struct [Thread] num_params 0 pop 0 [IsHitted]
:FUNC_04
hex
53              // push ebx
BBB8BFC800      // mov ebx, 00C8BFB8
51              // push ecx
83EC58          // sub esp, 0x58
6A01            // push 1
6A00            // push 0
6A00            // push 0
6A01            // push 1
6A01            // push 1
6A01            // push 1
6A01            // push 1
6A01            // push 1
8D442420        // lea eax, [esp+0x20]
50              // push eax
8D442430        // lea eax, [esp+0x30]
50              // push eax
8B842480000000  // mov eax, [esp+0x80]
83C04C          // add eax, 0x4C
50              // push eax
83C00C          // add eax, 0x58
50              // push eax
B800BA5600      // mov eax, 0x0056BA00
FFD0            // call eax
83C4 30         // add esp, 30 
8B4C2458        // mov ecx, [esp+0x58]
8B542400        // mov edx, [esp+0x00]
895170          // mov [ecx+0x70], edx
8B54240C        // mov edx, [esp+0x0C]
895158          // mov [ecx+0x58], edx
8B542410        // mov edx, [esp+0x10]
89515C          // mov [ecx+0x5C], edx
8B542414        // mov edx, [esp+0x14]
895160          // mov [ecx+0x60], edx
83C458          // add esp, 0x58
59              // pop ecx
5B              // pop ebx
C3              // ret
end

// 0AA7: call_function 5@(3@,1i) num_params 2 pop 2 [X] [Y] [Radian]
:FUNC_05
hex
D9442404        // fld dword ptr [esp+0x04]
D9442408        // fld dword ptr [esp+0x08]
D9F3            // fpatan                         
6800003443      // push 180.0
D80C24          // fmul dword ptr [esp]
D9EB            // fldpi
DEF9            // fdivp st(1), st(0)      
D91C24          // fstp dword ptr [esp]            
8B0424          // mov eax, [esp]
83C404          // add esp, 0x04             
C3              // ret
end

// 0AA5: call 6@(3@,1i) num_params 7 pop 7 [Object] [Z] [Y] [X] [Return]
:FUNC_06
hex
8B442414        // mov eax, [esp+0x14]
8B0D9C44B700    // mov ecx, [0x00B7449C]
50              // push eax
B840504600      // mov eax, 0x00465040
FFD0            // call eax
8B4014          // mov eax, [eax+0x14]
83EC40          // sub esp, 0x40
50              // push eax
8D442404        // lea eax, [esp+0x04]
50              // push eax
8B0D1D6E4C00    // mov ecx, [0x004C6E1D]        // Offset 0x007F20B0
81C1216E4C00    // add ecx, 0x004C6E21          //
8B81D6000000    // mov eax, [ecx+0x000000D6]
03C1            // add eax, ecx
05DA000000      // add eax, 0x000000DA
FFD0            // call eax
83C408          // add esp, 0x08
B800000000      // mov eax, 0.0
8944240C        // mov [esp+0x0C], eax
8944241C        // mov [esp+0x1C], eax
8944242C        // mov [esp+0x2C], eax
89442430        // mov [esp+0x30], eax
89442434        // mov [esp+0x34], eax
89442438        // mov [esp+0x38], eax
B80000803F      // mov eax, 1.0
8944243C        // mov [esp+0x3C], eax
8D442448        // lea eax, [esp+0x48]
50              // push eax
8D442404        // lea eax, [esp+0x04]
50              // push eax
8B44244C        // mov eax, [esp+0x4C]
83C00F          // add eax, 0x0F
C1E002          // shl eax, 0x02
03C6            // add eax, esi
50              // push eax
B890C75900      // mov eax, 0x0059C790
FFD0            // call eax
83C40C          // add esp, 0x0C 
83C440          // add esp, 0x40
C3              // ret
end

:PROX_SAM
hex
BE00000000      // mov esi, 0x00000000
8B442404        // mov eax, [esp+0x04]
83F813          // cmp eax, 0x13
7416            // je +0x16
83F814          // cmp eax, 0x14
7411            // je +0x11                     // if (projType == 13 || projType == 14)

B8807C7300      // mov eax, 0x00737C80
FFD0            // call eax
83C420          // add esp, 0x20
B8430B5A00      // mov eax, 0x005A0B43
FFE0            // jmp eax

8B44241C        // mov eax, [esp+0x1C]
85C0            // test eax, eax                // if (!pTarget)
742F            // jz +0x2F

83C022          // add eax, 0x22
668B00          // mov ax, [eax]
25FFFF0000      // and eax, 0x0000FFFF
50              // push eax
B8005B4C00      // mov eax, 0x004C5B00
FFD0            // call eax
85C0            // test eax, eax                // if (!_isModelHeli(pTarget->m_iModelID))
750B            // jnz +0x0B
B8305B4C00      // mov eax, 0x004C5B30
FFD0            // call eax
85C0            // test eax, eax                // if (_isModelPlane(pTarget->m_iModelID))
740A            // jz +0x0A
83C404          // add esp, 0x04
B814000000      // mov eax, 0x14                // iType = 20
EB08            // jmp +0x08                    // else
83C404          // add esp, 0x04
B815000000      // mov eax, 0x15                // iType = 21
8BD0            // mov edx, eax
6BC028          // imul eax, eax, 0x28
03463C          // add eax, [esi+0x3C]
83C00F          // add eax, 0x0F
C1E002          // shl eax, 0x02
03C6            // add eax, esi
8B00            // mov eax, [eax]
85C0            // test eax, eax
7511            // jne +0x11

B8807C7300      // mov eax, 0x00737C80
FFD0            // call eax
83C420          // add esp, 0x20
B8430B5A00      // mov eax, 0x005A0B43
FFE0            // jmp eax

8B86B0000000    // mov eax, [esi+0x000000B0]
8BD8            // mov ebx, eax
43              // inc ebx
83FB40          // cmp ebx, 0x40
7502            // jne +0x02
33DB            // xor ebx, ebx
899EB0000000    // mov [esi+0x000000B0], ebx
6BC00A          // imul eax, eax, 0x0A
034644          // add eax, [esi+0x44]
83C00F          // add eax, 0x0F
C1E002          // shl eax, 0x02
03C6            // add eax, esi
8B5C2400        // mov ebx, [esp+0x00]
8918            // mov [eax], ebx               // 0@(29@*10+2@) = pLauncher
BB00000000      // mov ebx, 0x00000000
895804          // mov [eax+0x04], ebx          // 1@(29@*10+2@) = 0
895008          // mov [eax+0x08], edx          // 2@(29@*10+2@) = iType
BB00000000      // mov ebx, 0x00000000
89580C          // mov [eax+0x0C], ebx          // 3@(29@*10+2@) = 0
8B5C241C        // mov ebx, [esp+0x1C]
895810          // mov [eax+0x10], ebx          // 4@(29@*10+2@) = pTarget
83C420          // add esp, 0x20
B8430B5A00      // mov eax, 0x005A0B43
FFE0            // jmp eax
end

:PROX_HYDRA
hex
BE00000000      // mov esi, 0x00000000

A198CDB700      // mov eax, [0xB7CD98]
50              // push eax
0530050000      // add eax, 0x0530
8B00            // mov eax, [eax]
83F832          // cmp eax, 0x32
750D            // jne +0D
8B0424          // mov eax, [esp]
058C050000      // add eax, 0x058C
8B00            // mov eax, [eax]
50              // push eax
EB02            // jmp +0x02
6AFF            // push -1

8B442408        // mov eax, [esp+0x08]
3B442400        // cmp eax, [esp+0x00]
7414            // je +0x14
3B442404        // cmp eax, [esp+0x04]
740E            // je +0x0E
8B44240C        // mov eax, [esp+0x0C]
83F813          // cmp eax, 0x13
7419            // je +0x19
83F814          // cmp eax, 0x14
7414            // je +0x14                     // if ((projType == 13 || projType == 14) && pLauncher != pPlayer && pLauncher != pPlayer->pCurrentCar)

83C408          // add esp, 0x08
B8807C7300      // mov eax, 0x00737C80
FFD0            // call eax
83C420          // add esp, 0x20
B86B974200      // mov eax, 0x0042976B
FFE0            // jmp eax

8B442424        // mov eax, [esp+0x24]
85C0            // test eax, eax                // if (!pTarget)
7507            // jne +0x07
B807000000      // mov eax, 0x07                // iType = 7
EB62            // jmp +0x62

83C022          // add eax, 0x22
668B00          // mov ax, [eax]
25FFFF0000      // and eax, 0x0000FFFF
50              // push eax
B8005B4C00      // mov eax, 0x004C5B00
FFD0            // call eax
85C0            // test eax, eax                // if (!_isModelHeli(pTarget->m_iModelID))
750B            // jnz +0x0B
B8305B4C00      // mov eax, 0x004C5B30
FFD0            // call eax
85C0            // test eax, eax                // if (_isModelPlane(pTarget->m_iModelID))
7421            // jz +0x21

83C404          // add esp, 0x04
8B442424        // mov eax, [esp+0x24]
3B442400        // cmp eax, [esp+0x00]
7406            // je +0x06
3B442404        // cmp eax, [esp+0x04]
7407            // je +0x07                     // if (pTarget == pPlayer || pTarget == pPlayer->pCurrentCar)
B803000000      // mov eax, 0x03                // iType = 3
EB05            // jmp +0x05                    // else
B805000000      // mov eax, 0x05                // iType = 5
EB1F            // jmp +0x1F                    // else

83C404          // add esp, 0x04
8B442424        // mov eax, [esp+0x24]
3B442400        // cmp eax, [esp+0x00]
7406            // je +0x06
3B442404        // cmp eax, [esp+0x04]
7407            // je +0x07                     // if (pTarget == pPlayer || pTarget == pPlayer->pCurrentCar)
B804000000      // mov eax, 0x04                // iType = 4
EB05            // jmp +0x05                    // else
B805000000      // mov eax, 0x06                // iType = 6

8BD0            // mov edx, eax
6BC028          // imul eax, eax, 0x28
03463C          // add eax, [esi+0x3C]
83C00F          // add eax, 0x0F
C1E002          // shl eax, 0x02
03C6            // add eax, esi
8B00            // mov eax, [eax]
85C0            // test eax, eax
7514            // jne +0x14

83C408          // add esp, 0x08
B8807C7300      // mov eax, 0x00737C80
FFD0            // call eax
83C420          // add esp, 0x20
B86B974200      // mov eax, 0x0042976B
FFE0            // jmp eax

8B86B0000000    // mov eax, [esi+0x000000B0]
8BD8            // mov ebx, eax
43              // inc ebx
83FB40          // cmp ebx, 0x40
7502            // jne +0x02
33DB            // xor ebx, ebx
899EB0000000    // mov [esi+0x000000B0], ebx
6BC00A          // imul eax, eax, 0x0A
034644          // add eax, [esi+0x44]
83C00F          // add eax, 0x0F
C1E002          // shl eax, 0x02
03C6            // add eax, esi
8B5C2408        // mov ebx, [esp+0x08]
8918            // mov [eax], ebx               // 0@(29@*10+2@) = pLauncher
BB00000000      // mov ebx, 0x00000000
895804          // mov [eax+0x04], ebx          // 1@(29@*10+2@) = 0
895008          // mov [eax+0x08], edx          // 2@(29@*10+2@) = iType
BB00000000      // mov ebx, 0x00000000
89580C          // mov [eax+0x0C], ebx          // 3@(29@*10+2@) = 0
8B5C2424        // mov ebx, [esp+0x24]
895810          // mov [eax+0x10], ebx          // 4@(29@*10+2@) = pTarget
83C428          // add esp, 0x28
B86B974200      // mov eax, 0x0042976B
FFE0            // jmp eax
end

:PROX_HUNTER
hex
BE00000000      // mov esi, 0x00000000

A198CDB700      // mov eax, [0xB7CD98]
50              // push eax
0530050000      // add eax, 0x0530
8B00            // mov eax, [eax]
83F832          // cmp eax, 0x32
750D            // jne +0D
8B0424          // mov eax, [esp]
058C050000      // add eax, 0x058C
8B00            // mov eax, [eax]
50              // push eax
EB02            // jmp +0x02
6AFF            // push -1

8B442408        // mov eax, [esp+0x08]
3B442400        // cmp eax, [esp+0x00]
7414            // je +0x14
3B442404        // cmp eax, [esp+0x04]
740E            // je +0x0E
8B44240C        // mov eax, [esp+0x0C]
83F813          // cmp eax, 0x13
7419            // je +0x19
83F814          // cmp eax, 0x14
7414            // je +0x14                     // if ((projType == 13 || projType == 14) && pLauncher != pPlayer && pLauncher != pPlayer->pCurrentCar)

83C408          // add esp, 0x08
B8807C7300      // mov eax, 0x00737C80
FFD0            // call eax
83C420          // add esp, 0x20
B863B44200      // mov eax, 0x0042B463
FFE0            // jmp eax

B809000000      // mov eax, 0x09                // iType = 9
8BD0            // mov edx, eax
6BC028          // imul eax, eax, 0x28
03463C          // add eax, [esi+0x3C]
83C00F          // add eax, 0x0F
C1E002          // shl eax, 0x02
03C6            // add eax, esi
8B00            // mov eax, [eax]
85C0            // test eax, eax
7514            // jne +0x14

83C408          // add esp, 0x08
B8807C7300      // mov eax, 0x00737C80
FFD0            // call eax
83C420          // add esp, 0x20
B863B44200      // mov eax, 0x0042B463
FFE0            // jmp eax

8B86B0000000    // mov eax, [esi+0x000000B0]
8BD8            // mov ebx, eax
43              // inc ebx
83FB40          // cmp ebx, 0x40
7502            // jne +0x02
33DB            // xor ebx, ebx
899EB0000000    // mov [esi+0x000000B0], ebx
6BC00A          // imul eax, eax, 0x0A
034644          // add eax, [esi+0x44]
83C00F          // add eax, 0x0F
C1E002          // shl eax, 0x02
03C6            // add eax, esi
8B5C2408        // mov ebx, [esp+0x08]
8918            // mov [eax], ebx               // 0@(29@*10+2@) = pLauncher
BB00000000      // mov ebx, 0x00000000
895804          // mov [eax+0x04], ebx          // 1@(29@*10+2@) = 0
895008          // mov [eax+0x08], edx          // 2@(29@*10+2@) = iType
BB00000000      // mov ebx, 0x00000000
89580C          // mov [eax+0x0C], ebx          // 3@(29@*10+2@) = 0
8B5C2424        // mov ebx, [esp+0x24]
895810          // mov [eax+0x10], ebx          // 4@(29@*10+2@) = pTarget
83C428          // add esp, 0x28
B863B44200      // mov eax, 0x0042B463
FFE0            // jmp eax
end

:PROX_RPG
hex
BE00000000      // mov esi, 0x00000000

A198CDB700      // mov eax, [0xB7CD98]
50              // push eax
0530050000      // add eax, 0x0530
8B00            // mov eax, [eax]
83F832          // cmp eax, 0x32
750D            // jne +0D
8B0424          // mov eax, [esp]
058C050000      // add eax, 0x058C
8B00            // mov eax, [eax]
50              // push eax
EB02            // jmp +0x02
6AFF            // push -1

8B442408        // mov eax, [esp+0x08]
3B442400        // cmp eax, [esp+0x00]
7414            // je +0x14
3B442404        // cmp eax, [esp+0x04]
740E            // je +0x0E
8B44240C        // mov eax, [esp+0x0C]
83F813          // cmp eax, 0x13
7419            // je +0x19
83F814          // cmp eax, 0x14
7414            // je +0x14                     // if ((projType == 13 || projType == 14) && pLauncher != pPlayer && pLauncher != pPlayer->pCurrentCar)

83C408          // add esp, 0x08
B8807C7300      // mov eax, 0x00737C80
FFD0            // call eax
83C420          // add esp, 0x20
B85B1A7400      // mov eax, 0x00741A5B
FFE0            // jmp eax

8B442408        // mov eax, [esp+0x08]
0564060000      // add eax, 0x000000664
8B00            // mov eax, [eax]
83F823          // cmp eax, 0x23
7507            // jne +0x07                    // if (pLauncher->dwWeaponID == RPG)
B80B000000      // mov eax, 0x0B                // iType = 11
EB71            // jmp +0x71

8B442424        // mov eax, [esp+0x24]
85C0            // test eax, eax                // if (!pTarget)
7507            // jne +0x07
B807000000      // mov eax, 0x07                // iType = 7
EB62            // jmp +0x62

83C022          // add eax, 0x22
668B00          // mov ax, [eax]
25FFFF0000      // and eax, 0x0000FFFF
50              // push eax
B8005B4C00      // mov eax, 0x004C5B00
FFD0            // call eax
85C0            // test eax, eax                // if (!_isModelHeli(pTarget->m_iModelID))
750B            // jnz +0x0B
B8305B4C00      // mov eax, 0x004C5B30
FFD0            // call eax
85C0            // test eax, eax                // if (_isModelPlane(pTarget->m_iModelID))
7421            // jz +0x21

83C404          // add esp, 0x04
8B442424        // mov eax, [esp+0x24]
3B442400        // cmp eax, [esp+0x00]
740D            // je +0x0D
3B442404        // cmp eax, [esp+0x04]
7407            // je +0x07                     // if (pTarget == pPlayer || pTarget == pPlayer->pCurrentCar)
B811000000      // mov eax, 0x11                // iType = 17
EB05            // jmp +0x05                    // else
B80F000000      // mov eax, 0x0F                // iType = 15
EB1F            // jmp +0x1F                    // else

83C404          // add esp, 0x04
8B442424        // mov eax, [esp+0x24]
3B442400        // cmp eax, [esp+0x00]
740D            // je +0x0D
3B442404        // cmp eax, [esp+0x04]
7407            // je +0x07                     // if (pTarget == pPlayer || pTarget == pPlayer->pCurrentCar)
B812000000      // mov eax, 0x12                // iType = 18
EB05            // jmp +0x05                    // else
B810000000      // mov eax, 0x10                // iType = 16

8BD0            // mov edx, eax
6BC028          // imul eax, eax, 0x28
03463C          // add eax, [esi+0x3C]
83C00F          // add eax, 0x0F
C1E002          // shl eax, 0x02
03C6            // add eax, esi
8B00            // mov eax, [eax]
85C0            // test eax, eax
7514            // jne +0x14

83C408          // add esp, 0x08
B8807C7300      // mov eax, 0x00737C80
FFD0            // call eax
83C420          // add esp, 0x20
B85B1A7400      // mov eax, 0x00741A5B
FFE0            // jmp eax

8B86B0000000    // mov eax, [esi+0x000000B0]
8BD8            // mov ebx, eax
43              // inc ebx
83FB40          // cmp ebx, 0x40
7502            // jne +0x02
33DB            // xor ebx, ebx
899EB0000000    // mov [esi+0x000000B0], ebx
6BC00A          // imul eax, eax, 0x0A
034644          // add eax, [esi+0x44]
83C00F          // add eax, 0x0F
C1E002          // shl eax, 0x02
03C6            // add eax, esi
8B5C2408        // mov ebx, [esp+0x08]
8918            // mov [eax], ebx               // 0@(29@*10+2@) = pLauncher
BB00000000      // mov ebx, 0x00000000
895804          // mov [eax+0x04], ebx          // 1@(29@*10+2@) = 0
895008          // mov [eax+0x08], edx          // 2@(29@*10+2@) = iType
BB00000000      // mov ebx, 0x00000000
89580C          // mov [eax+0x0C], ebx          // 3@(29@*10+2@) = 0
8B5C2424        // mov ebx, [esp+0x24]
83FA0B          // cmp edx, 0x0B
7505            // jne +0x05
BB00000000      // mov ebx, 0x00000000
895810          // mov [eax+0x10], ebx          // 4@(29@*10+2@) = pTarget
8B5C2410        // mov ebx, [esp+0x10]
895814          // mov [eax+0x14], ebx          // 5@(29@*10+2@) = fXPosition
8B5C2414        // mov ebx, [esp+0x14]
895818          // mov [eax+0x18], ebx          // 6@(29@*10+2@) = fYPosition
8B5C2418        // mov ebx, [esp+0x18]
89581C          // mov [eax+0x1C], ebx          // 7@(29@*10+2@) = fZPosition
BB000080BF      // mov ebx, 0xBF800000
895820          // mov [eax+0x20], ebx          // 1@(29@*10+2@) = 0
8B5C2420        // mov ebx, [esp+0x20]
6800003443      // push 180.0
85DB            // test ebx, ebx
755F            // jne +0x5F
8B5C2428        // mov ebx, [esp+0x28]
85DB            // test ebx, ebx
83C314          // add ebx, 0x14
8B1B            // mov ebx, [ebx]
85DB            // test ebx, ebx
D94330          // fld dword ptr [ebx+0x30]
D8642414        // fsub dword ptr [esp+0x14]
D94334          // fld dword ptr [ebx+0x34]
D8642418        // fsub dword ptr [esp+0x18]
D9F3            // fpatan                         
D80C24          // fmul dword ptr [esp]
D84820          // fmul dword ptr [eax+0x20]
D9EB            // fldpi
DEF9            // fdivp st(1), st(0)      
D95820          // fstp dword ptr [eax+0x20]    // 8@(29@*10+2@) = atan2(pDirect->x, pDirect->y)
D94330          // fld dword ptr [ebx+0x30]
D8642414        // fsub dword ptr [esp+0x14]
D94334          // fld dword ptr [ebx+0x34]
D8642418        // fsub dword ptr [esp+0x18]
D9C0            // fld st(0)
D8C9            // fmul st(0), st(1)
D9C2            // fld st(2)
D8CB            // fmul st(0), st(3)
DEC1            // faddp st(1), st(0)
D9FA            // fsqrt
DDDA            // fstp st(2)
DDD8            // fstp st(0)
D94338          // fld dword ptr [ebx+0x38]
D864241C        // fsub dword ptr [esp+0x1C]
DDDA            // fstp st(2)
D9F3            // fpatan                         
D80C24          // fmul dword ptr [esp]
D9EB            // fldpi
DEF9            // fdivp st(1), st(0)      
D95824          // fstp dword ptr [eax+0x24]    // 9@(29@*10+2@) = atan2(sqrt(pwr(pDirect->x, 2) + pwr(pDirect->y, 2)), pDirect->z)
EB3C            // jmp +0x3C
D94300          // fld dword ptr [ebx+0x00]
D94304          // fld dword ptr [ebx+0x04]
D9F3            // fpatan                         
D80C24          // fmul dword ptr [esp]
D84820          // fmul dword ptr [eax+0x20]
D9EB            // fldpi
DEF9            // fdivp st(1), st(0)      
D95820          // fstp dword ptr [eax+0x20]    // 8@(29@*10+2@) = atan2(pDirect->x, pDirect->y)
D94300          // fld dword ptr [ebx+0x00]
D94304          // fld dword ptr [ebx+0x04]
D9C0            // fld st(0)
D8C9            // fmul st(0), st(1)
D9C2            // fld st(2)
D8CB            // fmul st(0), st(3)
DEC1            // faddp st(1), st(0)
D9FA            // fsqrt
DDDA            // fstp st(2)
DDD8            // fstp st(0)
D94308          // fld dword ptr [ebx+0x08]
DDDA            // fstp st(2)
D9F3            // fpatan                         
D80C24          // fmul dword ptr [esp]
D9EB            // fldpi
DEF9            // fdivp st(1), st(0)      
D95824          // fstp dword ptr [eax+0x24]    // 9@(29@*10+2@) = atan2(sqrt(pwr(pDirect->x, 2) + pwr(pDirect->y, 2)), pDirect->z)
83C42C          // add esp, 0x2C
B85B1A7400      // mov eax, 0x00741A5B
FFE0            // jmp eax
end
